Seekbar - Как я могу отключить SecondaryProgress и Progress? - PullRequest
0 голосов
/ 22 марта 2012

Я хотел бы использовать панель поиска, чтобы показать текущее значение и настроить желаемое значение. Мне удалось изменить нужное значение с помощью большого пальца (Progress) и текущее значение с помощью бара (SecondaryProgress). Есть только одна маленькая ошибка / проблема:

Когда SecondaryProgress становится ниже, чем Progress, столбец показывает то же значение, что и Progress, даже значение SecondaryProgress действительно становится ниже или даже 0 (проверено в отладчике).

Как это должно выглядеть:

SecondaryProgress < Progress   <-- doesnt work, shows: 
(====   O    )                               (=======O    )

SecondaryProgress == Progress   <-- works
(=======O    )

SecondaryProgress > Progress   <-- works
(=======O==  )

Есть ли настройка, которая позволяет мне настроить это? Или я должен настроить панель поиска? И если да, то с чего мне начать? Для меня это не похоже на то, что я могу сделать в Layout ...

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 25 июня 2012

Может быть, немного поздно, но лучшее решение, которое я нашел для этой проблемы, - это настроить seekBar и использовать вторичный прорисовываемый прогресс, который будет использовать только часть высоты seekBar.

Скажем, например, что мы хотим использовать нижнюю часть розыгрыша для вторичного прогресса и оставить 10dip на вершине для прогресса. Мы могли бы использовать приведенный ниже код в качестве отображаемого прогресса для нашего seekBar:

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@android:id/background">
    <shape>
       <corners android:radius="5dip" />
       <gradient
        android:startColor="#ffffffff"
        android:centerColor="#ffdddddd"
        android:centerY="0.50"
        android:endColor="#ffffffff"
        android:angle="270" />
    </shape>
  </item>
  <item android:id="@android:id/progress">
    <clip>
       <shape>
        <corners android:radius="5dip" />
        <gradient
             android:startColor="#ff0088eb"
             android:endColor="#ff0068e7"
             android:angle="90" />
       </shape>
    </clip>
  </item>
 <item android:id="@android:id/secondaryProgress">
    <clip>
        <inset
            android:insetTop="10dp">
            <shape>
            <corners android:bottomLeftRadius="5dip"
                android:bottomRightRadius="5dip" />
            <gradient
                 android:startColor="#ff00c8fb"
                 android:endColor="#ff00a8f7"
                 android:angle="90" />
           </shape>
       </inset>
    </clip>
  </item>
</layer-list>

Основной совет - поместить вторичный ход прорисовки после прорисовки прохождения в список слоев, чтобы он рисовался над ним и всегда был видимым, и использовать вставку, чтобы она не занимала всю высоту SeekBar .

В вашем примере вы можете получить такой результат:

SecondaryProgress <Прогресс (==== --- O) </p>

SecondaryProgress == Прогресс (======= O)

SecondaryProgress> Прогресс (======= O--)

...