У меня есть ListView
внутри HorizontalScrollView
, scrollbartrack занимает область справа. Когда я перехожу на Scrollbarstyle:insideOverlay
, он все еще не занят. Если я перейду на полосы прокрутки: ни одна область не исчезнет, поэтому я знаю, что она имеет какое-то отношение к полосам прокрутки.ListView Полосы прокрутки insideOverlay no effect
Я тестировал все стили на полосах прокрутки и играл с отступом, а маржа не нашла способа получить его на самом деле. Кажется, что HorizontalScrollView
создает проблему, если я удалю, что полосы прокрутки наложены правильно.
В этом коде я устанавливаю наложение как в xml, так и в коде, но ни один из них не работает.
Вот базовый рабочий пример, где возникает проблема. В моем реальном коде макет не просто зеленый, поэтому решение с раскраской трассы зеленого не будет работать.
public class ScrollTest extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll_test);
ListView lv= getListView();
lv.setDivider(null);
//Just to make sure!
lv.setScrollBarStyle(ListView.SCROLLBARS_INSIDE_OVERLAY);
// create the grid item mapping
String[] from = new String[] {"rowid", "col_1", "col_2", "col_3", "col_4", "col_5"};
int[] to = new int[] { R.id.item1, R.id.item2, R.id.item3, R.id.item4, R.id.item5 , R.id.item6};
// prepare the list of all records
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
for(int i = 0; i < 50; i++){
HashMap<String, String> map = new HashMap<String, String>();
map.put("rowid", "" + i);
map.put("col_1", "col_1_item_" + i);
map.put("col_2", "col_2_item_" + i);
map.put("col_3", "col_3_item_" + i);
map.put("col_4", "col_4_item_" + i);
map.put("col_5", "col_5_item_" + i);
fillMaps.add(map);
}
// fill in the grid_item layout
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.row, from, to);
lv.setAdapter(adapter);
}
}
И соответствующий xml для макета. activty_scroll_test.xml:
<?xml version="1.0" encoding="UTF-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent">
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbarStyle="insideOverlay"/>
</HorizontalScrollView>
row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:background="@android:color/holo_green_dark"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/item1"
android:text="row_id"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="40dip"
android:padding="5dp"
/>
<TextView android:id="@+id/item2"
android:text="col_1"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:padding="5dp"
/>
<TextView android:id="@+id/item3"
android:text="col_2"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:padding="5dp"
/>
<TextView android:id="@+id/item4"
android:text="col_3"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:padding="5dp"
/>
<TextView android:id="@+id/item5"
android:text="col_4"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:padding="5dp"
/>
<TextView android:id="@+id/item6"
android:text="col_5"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:padding="5dp"
/>
</LinearLayout>
Спасибо за ответ, к сожалению, мне не повезло с такими решениями. Я попытался увидеть, где он находится, как с помощью Hierarchy Viewer, так и с настройкой цветов фона на разных элементах макета. Ничего из этого, похоже, не помогает, единственное, что я удалил, - это полностью удалить ScrollBars. – larlin
Я просто понял, что это немного странная настройка. Предполагается, что HorizontalScrollView должен иметь 1 ребенка, которому предоставляется неограниченный размер. Это может вызвать странность, когда дети ListView заполнены. Попробуйте добавить слой между ListView и HSV - LinearLayout может быть достаточно. – Delyan
Я проверил, что никакой разницы. – larlin