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,

Благодарю.

0 ответов

Другие вопросы по тегам