8

私のアプリについて

ホロの外観を持つアプリがあります。

ハニカム以前のデバイスについては、Holo テーマのいくつかの要素をバックポートしただけです。

テーマ、スタイル、および属性の操作は、CheckBox、RadioButton ... で問題ありません。

私がやろうとしていること

ListViewを使用して、多くのアイテムを表示します。ListViewで高速スクロールを有効にしたいのですが、ホロのように見せたいです。

私の問題

高速スクロールのDrawableをアプリのテーマに統合するのに苦労しています。

これまでに試したこと

  1. これを行うライブラリを探しています。 HoloEverywhereは有望でしたが、それを処理しません。

  2. 自分でやろうとした:

これらのドローアブルを追加しました:

ここに画像の説明を入力 ここに画像の説明を入力

次に、このドローアブルも追加しました:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/fastscroll_thumb_pressed_holo" />
    <item android:drawable="@drawable/fastscroll_thumb_default_holo" />
</selector>

これを私のに追加しましたattrs.xml

<attr name="fastScrollThumbDrawable" format="reference" />

私はこれを私の中に追加しましたthemes.xml:

<style name="MyTheme">
    <item name="fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
</style>

このテーマは、次のアプリに適切に設定されていますManifest.xml

android:theme="@style/MyTheme"

android:fastScrollThumbDrawable pre-honeycomb は存在しないことに注意してください。


これを解決するのを手伝ってくれることを願っています。:)

アップデート :

数時間前に、 HoloEverywhereに高速スクロールのサポートが追加されたようです。

https://github.com/ChristopheVersieux/HoloEverywhere/commit/34561e48339bf6a3e0307d2d35fc4c5ac8409310

私はそれをチェックアウトします。:)

4

2 に答える 2

1

を使用してandroid:fastScrollThumbDrawableいますが、なぜ機能しないのかわからないので、ウェブで検索するとハードコードの解決策が見つかりまし。必要な古い API で機能するかどうかはわかりませんが、私の場合は問題が解決されました。私はAPI 18のようなターゲットとAPI 17のデバイスをテストに使用していることに注意してください。

コード:

try {
    Field f = AbsListView.class.getDeclaredField("mFastScroller");
    f.setAccessible(true);
    Object o = f.get(<<your listView here>>);
    f = f.getType().getDeclaredField("mThumbDrawable");
    f.setAccessible(true);
    Drawable drawable = (Drawable) f.get(o);
    drawable = getResources().getDrawable(R.drawable.<<your thumb drawable here can be a selector>>);
    f.set(o, drawable);
} catch (Exception e) {
    e.printStackTrace();
}
于 2013-08-21T07:53:37.553 に答える
0

これを変える:

<style name="MyTheme">
    <item name="fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
</style>

このようなものに、あなたはそこでの賛辞を忘れたようです:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<style name="listviewfastscrollstyle" parent="android:Theme">
    <item name="android:fastScrollTrackDrawable">@drawable/fastscroll_thumb_holo</item>
    <item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
</style>

</resources>

これで動作するはずです:)

よろしくお願いします

サファリ

于 2013-01-03T14:27:26.540 に答える