Справа налево ProgressBar?

Кто-нибудь знает, как сделать вид, обратный, у меня есть горизонтальный ProgressBar, и я хочу, чтобы он справа налево, а не слева направо

 In silico07 окт. 2010 г., 02:19
Зачем вам нужен индикатор RTL? Все индикаторы выполнения, которые я видел, идут слева направо.
 EboMike07 окт. 2010 г., 02:13
Какой язык? Какая платформа? Какой API?
 BoltClock07 окт. 2010 г., 02:28
Мы можем отвечать только на вопросы псевдокода с помощью псевдокода ... в противном случае, пожалуйста, по крайней мере, укажите, что запрашивает комментарий EboMike.
 Niko07 окт. 2010 г., 02:33
Ой извините, я клянусь, я поставил Android. Это просто для игры.

Ответы на вопрос(8)

используя атрибуты scaleX или scaleY

    <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleX="-1"/>
 SolidSnake12 апр. 2018 г., 10:15
определенно должен быть ответ

View.

Просто используйтеодин атрибут xml в вашемmy_progress_drawable.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/my_background"/>
    <item android:id="@android:id/progress">
        <clip
            android:drawable="@drawable/my_right_to_left_progress"
            android:gravity="right" /> <!-- Clip the image from the RIGHT -->
    </item>

</layer-list>

Документация говорит нам, чтоgravity="right" Является ли это:

Поместите объект по правому краю его контейнера, не меняя его размера. Когда clipOrientation "горизонтальный", отсечение происходит с левой стороны отрисовки.

Не переопределятьonDraw(), Эта реализация более стабильна в разных версиях Android.

К сожалению, невозможно установить серьезностьClipDrawable программно, не вызывая егоконструктор.

 FunkTheMonk09 авг. 2013 г., 16:53
Для голографических тем, которые используют <scale> вместо <clip>, вместо этого можно использовать scaleGravity
 public class inverseSeekBar extends ProgressBar {

public inverseSeekBar(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}

public inverseSeekBar(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

public inverseSeekBar(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

@Override
protected synchronized void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
     canvas.save(); 

        //now we change the matrix
        //We need to rotate around the center of our text
        //Otherwise it rotates around the origin, and that's bad. 
        float py = this.getHeight()/2.0f;
        float px = this.getWidth()/2.0f;
        canvas.rotate(180, px, py); 

        //draw the text with the matrix applied. 
        super.onDraw(canvas); 

        //restore the old matrix. 
        canvas.restore(); 
}}
  <com.hlidskialf.android.widget.inverseSeekBar 

       style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="200dip"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="50"
    android:secondaryProgress="75" 

/> 

Потому что я ленивый, я просто добавляю эти две строки вseekbar XML:

android:layoutDirection="rtl"
android:mirrorForRtl="true"

Есть ли минусы к этому?

 Mohamed Mohaideen AH12 мая 2019 г., 13:37
mirrorforRtl поддерживает только API> 18
Решение Вопроса

Создайте подкласс обычного представления индикатора выполнения и реализуйте метод onDraw, чтобы вращать холст перед его рисованием:

@Override
protected void onDraw(Canvas canvas) {
    canvas.save();
    canvas.rotate(180,<CenterX>,<CenterY>);
    super.onDraw(canvas);
    canvas.restore();
}

Это должно сделать свое дело.

вы можете использовать два свойства. если вы хотите использоватьandroid:layoutDirection="rtl" требуется минимум API 17, но если вы используетеandroid:rotation="180" нет ограничений API

<ProgressBar
        android:progress="20"
        android:rotation="180"
        style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"
    android:layout_margin="8dp"
    android:layoutDirection="rtl"
    android:progress="80" />

а затем он повернут и работает так, как вы хотели.

progressBar.setRotation(180);

Пример:

 Vahid Amiri24 авг. 2016 г., 11:04
НастройкаLayoutDirection у меня на ProgressBar объект работает.
 Sunshinator30 июн. 2016 г., 22:11
Вы можете установить это непосредственно в файле XML с помощьюandroid:rotation="180"
 Ersin Gülbahar31 дек. 2013 г., 22:41
Спасибо за ответ
 comm1x19 дек. 2017 г., 09:25
В API 24 (7.0) панель поиска становится прозрачной с вращением = 180
 Hamidreza Sadegh24 сент. 2014 г., 10:36
разбить мое приложение ...
 J Jiang21 апр. 2014 г., 09:22
должен быть лучшим ответом до сих пор
 Salman Khakwani10 нояб. 2016 г., 11:18
Будет ли это работать на Circular Progress Bar?
 Vahid Amiri24 авг. 2016 г., 10:58
Это также вылетает мое приложение. Android 6.0. Направление по умолчанию - RTL, но я хотел индикатор выполнения LTR.

Ваш ответ на вопрос