Holo fast scroll взгляд на старые устройства
О моем приложении
У меня есть приложение, которое выглядит голо.
Для устройств перед сотовой разверткой я просто перенес некоторые элементы темы Holo.
Работа с темами, стилями и attrs - это нормально для CheckBox, RadioButton ...
Что я пытаюсь сделать
Я использую ListView для отображения большого количества элементов. Я хочу включить быструю прокрутку на моем ListView, и я хочу, чтобы он выглядел голо.
Моя проблема
У меня есть некоторые трудности при интеграции быстрой прокрутки Drawable it в тему моего приложения.
Что я пробовал до сих пор
Ищете библиотеки, которые делают это. HoloEverywhere был многообещающим, но не справился с этим.
Пытался сделать это сам:
Я просто добавил эти рисунки:
Затем также добавил этот Drawable:
<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
не существует предварительно соты.
Я надеюсь, что вы можете помочь мне решить это.:)
Обновить:
Похоже, поддержка быстрой прокрутки была добавлена в HoloEverywhere несколько часов назад:
https://github.com/ChristopheVersieux/HoloEverywhere/commit/34561e48339bf6a3e0307d2d35fc4c5ac8409310
Я проверю это.:)
2 ответа
Я использую 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();
}
Изменить это:
<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>
Теперь это должно работать:)
С уважением
сафари