вопрос настройки быстрой прокрутки в Android ViewView - PullRequest
6 голосов
/ 08 февраля 2012

вот мой список просмотра

<ListView android:layout_width="match_parent"
            android:layout_height="match_parent" android:id="@+id/ListView"
            android:fastScrollEnabled="true" android:divider="@null"
            style="@drawable/listviewfastscrollstyle"
            ></ListView>

Это файл стиля listviewfastscrollstyle

<style> 
<item name="android:fastScrollTrackDrawable">@drawable/listselector</item> 
<item name="android:fastScrollThumbDrawable">@drawable/listselector</item> 
</style>

Это файл списка выбора

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

Но все же просмотр списка быстрый прокруткаБар не настраивается.

Ответы [ 2 ]

9 голосов
/ 08 февраля 2012

Стиль, который вы создали, неправильный.Вам нужно дать ему имя.Я не уверен, что случилось с твоим последним постом об этом.Выполните следующие действия:

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

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

</resources>

В своем манифесте задайте стиль следующим образом:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/CustomTheme">

По запросу, это ListView, на котором я тестировал:

<ExpandableListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    android:drawSelectorOnTop="false"
    android:fastScrollAlwaysVisible="true"
    android:fastScrollEnabled="true"
    android:indicatorLeft="8dip"
    android:indicatorRight="52dip"
    android:paddingRight="32dip" />
8 голосов
/ 06 марта 2014

Чтобы изменить fastScrollThumbDrawable, fastScrollTrackDrawable или цвет текста fastscroll SectionIndexer, вы должны использовать контекстную тему.Другие ответы рекомендуют переопределить тему приложения через AndroidManifest, чтобы сделать это.Это работает, но если вы хотите, чтобы на 10000 * отображались разные полосы прокрутки, вы не сможете этого сделать.Кроме того, способ изменения цвета текста на SectionIndexer не должен выполняться в теме приложения, поскольку он может иметь другие нежелательные эффекты.

Лучший способ стилизовать ListView для быстрой прокрутки - создать пользовательский ListView, использующий ContextThemeWrapper.

Вот пример:

public class FastscrollThemedListView extends ListView {
    public FastscrollThemedListView(Context context, AttributeSet attrs) {
        super(new ContextThemeWrapper(context, R.style.FastScrollTheme), attrs);
    }
}

Это все, что вам нужно.Ваш стиль будет выглядеть следующим образом:

<style name="FastScrollTheme">
    <item name="android:textColorPrimary">?android:textColorPrimaryInverse</item>
    <item name="android:fastScrollThumbDrawable">@drawable/fast_scrollbar_thumb</item>
    <item name="android:fastScrollTrackDrawable">@drawable/fast_scrollbar_track</item>
</style>

textColorPrimary - это то, как вы подключаетесь, как вы подключаетесь к цвету шрифта SectionIndexer, если вы его используете.

Ваш ListView будет выглядеть такэто:

<com.yourapp.view.FastscrollThemedListView 
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:id="@+id/ListView"
    android:fastScrollEnabled="true" 
    android:divider="@null"/>

и, в случае необходимости, вот так может выглядеть ваш ThumbDrawable:

fast_scrollbar_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="10dp" android:bottom="10dp">
        <shape android:shape="rectangle">
            <size
                android:height="45dp"
                android:width="5dp" />
            <solid android:color="#DA414A" />
        </shape>
    </item>
</layer-list>

AFAIK нет, почему стилизовать панель FastScroll перед HoneyComb (API 11)

...