Как установить поле для вертикальной полосы прокрутки с правого края в ListView?

#android #listview #scrollbar #margin

#Android #listview #полоса прокрутки #поле

Вопрос:

Для платформы Android:

Мне нужно поместить поле с правой стороны вертикальной полосы прокрутки в listview (оно настраивается). Пожалуйста, посмотрите прикрепленное изображение. Полоса прокрутки по умолчанию находится в крайней правой части listview. Изображение

Нужна ваша помощь. Спасибо.

Комментарии:

1. Для какой платформы / GUI-фреймворка это? Многие из них имеют вертикальные полосы прокрутки и просмотр списка.

2. Это для платформы Android 2.1 и выше.

Ответ №1:

Если вы заботитесь о своем дизайне и хотите применить стиль глобально, используйте это.


res/values/styles.xml

 <item name="android:scrollbarThumbVertical">@drawable/scrollbar</item>
  

res/drawable/scrollbar.xml

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:right="4dp"> <!-- Your Margin -->
        <shape>
            <solid android:color="@color/red500" /> <!-- Your Color -->
            <corners android:radius="2dp" /> <!-- Your Radius -->
            <size android:width="4dp" /> <!-- Your Width -->
        </shape>
    </item>
</layer-list>
  

Все остальные ответы были созданы разработчиками, а не дизайнерами, такими как я.

Результат

Хорошая полоса прокрутки

Комментарии:

1. Это то, что я искал! Спасибо, Майкл!

2. Извините, я не смог дать более одного положительного отзыва. Этот ответ заслуживает 100.

Ответ №2:

Обратитесь к документации по android:scrollbarStyle атрибуту View . Стиль, который вы, вероятно, захотите использовать, это insideOverlay (в сочетании с android:paddingRight ).

Что-то вроде

 <LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:paddingRight="50dip">
    <ListView
        android:id="@ id/scrollable_table" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbarStyle="insideOverlay">
    .
    .
    .
  

Комментарии:

1. Почему не использовать заполнение непосредственно в ListView без использования оболочки?

2. Ответ @Michael’s намного лучше. Пожалуйста, просмотрите это и рассмотрите возможность изменения принятого ответа.

3. Примечание: если вам нужно обратное (сделать полосу прокрутки смещенной вправо) и иметь paddingRight и clipToPadding = false , используйте outsideOverlay

Ответ №3:

Попробуйте включить быструю прокрутку, она выполняет работу большую часть времени:

 <ListView
    android:id="@ id/chapter_list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fastScrollEnabled="true"/>
  

Комментарии:

1. Это не отвечает на вопрос.