在Android中将焦点ScrollView放在页面顶部

时间:2012-02-28 06:19:16

标签: android listview scrollview

我有一个Activity,其中我有一些View是textViews ImageViews和MapView,最后是页面上的listview。

所有这些控件都在滚动视图中。问题是当列表视图填充滚动时,滚动视图也会滚动到列表视图。焦点不在页面顶部始终位于页面底部。

我还在xml和代码android:focusable="false"中对Listview使用了ListView.setFocusable(false);但是这不起作用,所以请提出任何替代方案。

5 个答案:

答案 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);