Как исправить проблемы с поисковыми барами и большими пальцами
Я установил изображение большого пальца в строке поиска, но мой большой палец выглядит немного ниже строки поиска. Как установить большой палец в правильное положение стрелки. Посмотрите прикрепленное изображение ![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>
Спасибо
Сунил Кумар Саоу
Ответы
Ответ 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.