6

バックグラウンド

ここでは、Android Lollipop のストック連絡先アプリのスタイルを模倣する方法を示す小さなライブラリを作成しました。

問題

Android 5.1 では、高速スクローラーが以前のものと大きく異なって見え、右に近すぎて使いにくいようです。

Android 4.4 のスクリーンショット:

ここに画像の説明を入力

Android 5 のスクリーンショットは次のとおりです。

ここに画像の説明を入力

および Android 5.1 の場合:

ここに画像の説明を入力

私が見つけたもの

Android 5.1 のすべての「新機能」セクションと、関連するクラスのドキュメントを調べてみましたが、「 setFastScrollStyle 」を除いて特別なものは見つかりませんでした。ただし、使用方法の説明が見つかりませんでした (さらに、 API 21 からのものであるため、それが理由ではない可能性があります)。

質問

高速スクローラーを少し左に配置して、タッチしやすくするにはどうすればよいですか?

setFastScrollStyle をどのように使用しますか? これに関するチュートリアルはありますか?

4

2 に答える 2

8

私は同じ問題を抱えていましたが、数時間の調査の後、解決策を思いつきました. この AOSP コミットが最も役に立ちました。Android 5.1 (SDK 22) でスクロールバーに加えられた変更が示されています: Update scrollbars to match Material spec

次の 2 つの可能性があります。

ここに画像の説明を入力

A: 新しいスタイルを使用し、パディングを追加します

これにより、API 21 (Android 5.1) と同じ新しい四角形が保持されますが、左右にパディングが追加されます。

1: fastscroll_thumb_material.xml を drawables フォルダーにコピーします。

これはコンテンツである必要があります (スペースを節約するために AOSP コメントを削除しました):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:tint="?attr/colorControlActivated"
            android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <size android:width="8dp" android:height="48dp" />
        </shape>
    </item>
    <item>
        <shape android:tint="?attr/colorControlNormal"
            android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <size android:width="8dp" android:height="48dp" />
        </shape>
    </item>
</selector>

2: テーマを編集する

次の項目をテーマに追加します。これをスタイルに入れて で使用できると思いますが、setFastScrollStyleこちらの方が簡単だと思います。

<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item>

3: fastscroll_thumb_material.xml を編集する

好みに合わせて編集できますが、スクロールバーの左右に8dpを追加する次のことを行いました。各シェイプの周りにレイヤー リストとアイテムを追加し、新しいアイテムにandroid:right="8dp"とを追加しました。android:left="8dp"元のアイテムにそれを追加しようとしましたが、うまくいきませんでした.形状にパディングを追加することもできませんでした.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <layer-list>
            <item android:right="8dp" android:left="8dp">
                <shape android:tint="?attr/colorControlActivated"
                    android:shape="rectangle">
                    <solid android:color="@android:color/white" />
                    <size android:width="8dp" android:height="48dp" />
                </shape>
            </item>
        </layer-list>
    </item>
    <item>
        <layer-list>
            <item android:right="8dp" android:left="8dp">
                <shape android:tint="?attr/colorControlNormal"
                    android:shape="rectangle">
                    <solid android:color="@android:color/white" />
                    <size android:width="8dp" android:height="48dp" />
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

B: スクロールバーを古いスタイルに変更する

これは、API 21、Android 5.0 スタイルを使用します

1: 古いドローアブルをプロジェクトに追加する

上記のコミット (fastscroll_thumb_mtrl_alpha.png および fastscroll_track_mtrl_alpha.9.png) からダウンロードできますが、バンドルも行っています。Google ドライブからダウンロードすることもできます。

2: fastscroll_thumb_material.xml をドローアブルに追加します

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha"
            android:tint="?attr/colorControlActivated" />
    </item>
    <item>
        <bitmap android:src="@drawable/fastscroll_thumb_mtrl_alpha"
            android:tint="?attr/colorControlNormal" />
    </item>
</selector>

3: fastscroll_track_material.xml をドローアブルに追加します

<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/fastscroll_track_mtrl_alpha"
    android:tint="?attr/colorControlNormal" />

4: テーマを編集する

次の項目をテーマに追加します。これをスタイルに入れて で使用できると思いますが、setFastScrollStyleこちらの方が簡単だと思います。

<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_material</item>
<item name="android:fastScrollTrackDrawable">@drawable/fastscroll_track_material</item>

これがあなたの目標を達成するのに役立つことを願っています:)

于 2015-03-23T17:15:44.003 に答える