Подтвердить что ты не робот

Как исправить проблемы с поисковыми барами и большими пальцами

Я установил изображение большого пальца в строке поиска, но мой большой палец выглядит немного ниже строки поиска. Как установить большой палец в правильное положение стрелки. Посмотрите прикрепленное изображение enter image description here

<SeekBar android:id="@+id/PP_Player_SeekBar" 
         android:thumb="@drawable/music_player_playerhead"
         android:paddingLeft="8dip"
         android:paddingRight="8dip"                 
         android:progressDrawable="@drawable/seekbar_drawable_xml_background"
         android:layout_width="236dip"
         android:layout_centerHorizontal="true"
         android:layout_height="wrap_content"
         android:layout_marginTop="47dip"></SeekBar>

Спасибо Сунил Кумар Саоу

4b9b3361

Ответ 1

Установите minHeight и maxHeight так же, как и высота стрелки. например,

<SeekBar 
    android:id="@+id/PP_Player_SeekBar"  
    android:thumb="@drawable/music_player_playerhead"
    android:paddingLeft="8dip"   
    android:paddingRight="8dip"                 
    android:progressDrawable="@drawable/seekbar_drawable_xml_background"
    android:layout_width="236dip" 
    android:layout_centerHorizontal="true"
    android:layout_height="wrap_content" 
    android:layout_marginTop="47dip"
    android:minHeight="11dip"
    android:maxHeight="11dip" />

См. следующий URL-адрес http://qtcstation.com/2011/05/android-how-to-fix-seekbar-bar-thumb-centering-issues/

Ответ 2

На самом деле достаточно определить maxHeight для большого числа, такого как 1000dp.

Это также имеет преимущество при работе с height=wrap_content и height=match_parent.

Ответ 3

Для меня проблема больше связана с вертикальным центрированием фона (отслеживание дорожки). Это изначальный ошибочный код, который я использовал (который вызвал проблему), как это было предложено разработчиком Android и другими записями StackOverflow:

<item
    android:id="@android:id/background"
    android:drawable="@drawable/seekbar_track"/>
<item android:id="@android:id/secondaryProgress">
    <scale
        android:drawable="@drawable/seekbar_progress2"
        android:scaleWidth="100%" />
</item>
<item android:id="@android:id/progress">
    <scale
        android:drawable="@drawable/seekbar_progress"
        android:scaleWidth="100%" />
</item>

Проблема здесь - это первый пункт, который относится к фону SeekBar. Многие записи подскажут вам, чтобы функция layout_minHeight имела какое-то большое значение, чтобы избежать вертикального пространственного разъединения между большим пальцем и дорожкой. Это не было для меня решением - при просмотре на планшете фон все еще тянулся к его меньшему размеру на телефоне - поэтому дорожка была последовательно расположена намного выше центра трека SeekBar. Решение состоит в том, чтобы удалить эту запись в SeekBar drawable, поэтому теперь она выглядит следующим образом:

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

    <item android:id="@android:id/secondaryProgress">
        <scale
            android:drawable="@drawable/seekbar_progress2"
            android:scaleWidth="100%" />
    </item>
    <item android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/seekbar_progress"
            android:scaleWidth="100%" />
    </item>

</layer-list>

Затем, в определении стиля SeekBar, установите layout_background в дорожку, пригодную для рисования. Мой выглядит так:

<style name="styleSeekBar" parent="@android:style/Widget.SeekBar">
    <item name="android:padding">@dimen/base_0dp</item>
    <item name="android:background">@drawable/seekbar_track</item>
    <item name="android:progressDrawable">@drawable/abratingbar</item>
    <item name="android:minHeight">@dimen/base_29dp</item>
    <item name="android:maxHeight">@dimen/base_29dp</item>
    <item name="android:layout_marginLeft">@dimen/base_10dp</item>
    <item name="android:layout_marginRight">@dimen/base_10dp</item>
    <item name="android:layout_marginTop">@dimen/base_10dp</item>
    <item name="android:layout_marginBottom">@dimen/base_10dp</item>
    <item name="android:scaleType">fitXY</item>
</style>

(Раньше настройка фона здесь была всего лишь цветом [белый].).

Это запись в моем макете, в которой используются как стиль, так и чертежи:

<SeekBar
    android:id="@+id/seekbar_page_number"
    style="@style/styleSeekBar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/base_29dp"
    android:minHeight="@dimen/base_29dp"
    android:maxHeight="@dimen/base_29dp"
    android:layout_marginLeft="@dimen/base_230dp"
    android:layout_gravity="bottom|right"
    android:progress="1"
    android:max="20"
    android:progressDrawable="@drawable/abseekbar"
    android:thumb="@drawable/abseekbar_thumb"/>

Итак, чтобы подвести итог, не устанавливайте функцию фона (дорожки) в вашем пользовательском SeekBar drawable, установите ее в функции layout_background вашего пользовательского стиля SeekBar. Это гарантирует, что дорожка всегда вертикально центрируется в горизонтальном SeekBar.