4

私は高速スクロールバーに取り組んでいます。古いデバイスで Android 5.1 スタイルの高速スクロールバーを使用したい (Android 5.0.2、API 21 でテスト中)。ここに私がこれまでに得たものの写真があります。(レピュテ​​ーション システムの関係でまだ写真を投稿できません (私はここにいるのは初めてです)。そのため、私の Google フォトへのリンクです。)

https://goo.gl/photos/YihnpUN3SfjLjjB8A

これが私の問題です:スクロールバートラック(灰色の部分)が画面の高さ全体(より正確にはコンテンツの高さ全体)を取るようにしたいです。これで、アクション バーの数ピクセル下から開始し、ナビゲーション バーの数ピクセル上で終了します。アクション バーの真下から開始し、ナビゲーション バーの真上で終了するようにしたいと考えています。

これが私のコードの実装です:

ドローアブル 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>

ドローアブル 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>

スタイル.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 の実装を深く掘り下げる必要がありますか?

もう 1 つ質問: 高速スクロール トラックの適切な色を誰か教えてくれませんか? 私は現在使用してい#21000000ます。

ありがとう。

4

0 に答える 0