Android - размер нарисованной фигуры xml установлен для заполнения родительского?
Я работаю над быстрой полосой прокрутки. Я хочу использовать быструю полосу прокрутки в стиле Android 5.1 на старых устройствах (я тестирую на Android 5.0.2, API 21). Вот картина того, что у меня так далеко. (Я пока не могу публиковать фотографии из-за системы репутации (я здесь новичок), так что это ссылка на мои Google Фото.)
https://goo.gl/photos/YihnpUN3SfjLjjB8A
Вот моя проблема: я хочу, чтобы дорожка полосы прокрутки (серая часть) занимала всю высоту экрана (точнее всю высоту содержимого). Теперь он начинается на несколько пикселей ниже панели действий и заканчивается на несколько пикселей выше панели навигации - и я бы хотел, чтобы он начинался прямо под панелью действий и заканчивался прямо над панелью навигации.
Вот моя реализация кода:
drawable fastscroll_thumb.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:left="8dp">
<shape
android:tint="?attr/colorControlActivated"
android:shape="rectangle">
<solid android:color="@color/colorPrimaryDark" />
<size
android:width="8dp"
android:height="48dp" />
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<item android:left="8dp">
<shape
android:tint="?attr/colorControlNormal"
android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
<size
android:width="8dp"
android:height="48dp" />
</shape>
</item>
</layer-list>
</item>
</selector>
drawable fastscroll_track.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item android:left="8dp">
<shape
android:tint="?attr/colorControlNormal"
android:shape="rectangle">
<solid android:color="@color/fastScrollTrack" />
<size android:width="8dp" />
</shape>
</item>
</layer-list>
</item>
</selector>
Я использую фрагмент для списка:
файл макета фрагмента
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/all_songs_fragment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="@android:color/transparent"
android:drawSelectorOnTop="true"
android:focusable="true"
android:clickable="true"
android:fastScrollEnabled="true" />
</LinearLayout>
styles.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb</item>
<item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track</item>
</style>
</resources>
Я думаю, что происходит, что я просто меняю "тему" быстрой полосы прокрутки. Поскольку я использую API 21, стандартная полоса прокрутки выглядит по-другому (это просто тонкая линия с большим пальцем - https://goo.gl/photos/T15JVGgpisqqYSd26). Мне удалось сделать большой палец 48dp в высоту и 8dp в ширину, как и должно быть. Однако я не могу изменить высоту трассы. Я хотел бы установить что-то вроде "fill_parent", но я не могу - единственными допустимыми единицами являются px, dp, sp, in и mm. Есть ли простой обходной путь, или мне нужно копаться глубже в реализации fastscroll?
Еще один вопрос: кто-нибудь может сказать мне правильный цвет трека fasttscroll? Я сейчас пользуюсь #21000000
,
Благодарю.