我有一个Activity,其中我有一些View是textViews ImageViews和MapView,最后是页面上的listview。
所有这些控件都在滚动视图中。问题是当列表视图填充滚动时,滚动视图也会滚动到列表视图。焦点不在页面顶部始终位于页面底部。
我还在xml和代码android:focusable="false"
中对Listview使用了ListView.setFocusable(false);
但是这不起作用,所以请提出任何替代方案。
答案 0 :(得分:1)
在ScrollView中你可以拥有ListView的两件事,你只需要在使用它时使ListView成为一个永久的大小(不滚动)。
这里的好例子NonScrollListView
对于从ListView开始的ScrollView,我建议使用 机器人:可聚焦="假"就像你已经在ListView XML中使用
一样 ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);
scrollView.requestFocus(View.FOCUS_UP);
scrollView.scrollTo(0,0);
答案 1 :(得分:0)
您无法在滚动视图中使用列表视图 你可以做两件事来获得相同的
(1)减少视图的高度,使它们适合实际屏幕并删除滚动视图,默认的视图滚动条将起作用。
(2)列表视图的内容尝试创建具有行作为列表视图的布局
LinearLayout parent = new LinearLayout(this);
parent.setOrientation(VERTICAL);
parent.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);//
for(number of rows in your list)
{
LinearLayout row= new LinearLayout(this);
row.setOrientation(Horizontal);
row.setLayoutParams(new LayoutParams(row_width,row_height);
TextView text= new TextView (this);
text.setText("your text");
text.setLayoutParams(new LayoutParams(text_width,text_height);
row.addView(text);
.
.//other view you want to add as check box etc
.
.
parent.AddView(row);
}
this.addView(parent);
hope this will help you
note:but in case you have a large number of rows it may cause memory issues
答案 2 :(得分:0)
Vipin是正确的,因为您无法在滚动视图中执行列表视图。您还可以根据光标中有多少项(for循环)设置一个在Java中动态化的tablelayout。
换句话说,使用滚动视图设置XML。添加项目将显示在顶部,然后在底部放置您的表格。使用buildRow()
在Java中构建表。然后在调用setContentView(R.layout.xmllayout);
答案 3 :(得分:0)
我尝试了很多替代方案,但只有这对我有用:
ScrollView scroll = (ScrollView) findViewById(R.id.addresses_scroll);
scroll.setFocusableInTouchMode(true);
scroll.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
答案 4 :(得分:0)
如果您在scrollview中将listview作为子视图,则scrollview会将其焦点移至listview。为了避免这种情况,我尝试了很多选项,但这个选项对我很有用:
scroll_main.pageScroll(View.FOCUS_UP);