我发现了许多教程和示例,但为什么ListView不能在ScrollView中使用?
只有答案 使用ListView使其不滚动是非常昂贵的,并且违背了ListView的全部目的。 resources。
我有以下xml文件。
.........
<ScrollView
android:id="@+id/sv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2">
<ListView
android:id="@+id/list"
android:layout_width="275dp"
android:layout_height="200dp">
</ListView>
</ScrollView>
.........
在这个xml文件中,我已经使用
wrap_content而不是listview的高度为200dp
ListView lv = (ListView) findViewById(R.id.list);
lv.setAdapter(new EfficientAdapter(this));
但不起作用。
特定身高和体重的替代滚动列表项目是什么。
但我试过这个:
<ListView
android:id="@+id/list"
android:layout_width="275dp"
android:layout_height="200dp">
</ListView>
或
<ScrollView android:layout_width="fill_parent" android:id="@+id/sv"
android:layout_height="wrap_content" android:layout_below="@+id/textView2">
<LinearLayout android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<ListView android:id="@+id/list" android:layout_width="275dp"
android:layout_height="240dp"></ListView>
</LinearLayout>
</ScrollView>
没有scollview但滚动listitem是好的,但不是很平常。 我试过this,但在这背后无法理解。
编辑:
是否正确 Listview具有内置滚动功能。因此没有必要在scrollview中定义listview。这意味着滚动视图没有必要吗?
答案 0 :(得分:4)
问题不是ListView而是ScrollView
这两个视图需要控制垂直滚动,如果你有一个滚动视图和一个列表视图在同一个布局中,用户向下滚动,哪一个必须采取焦点,所以滚动?
这是一个常见且容易解决的问题(此解决方案来自Google Android团队的Romain Guy!):不要在滚动视图中使用列表视图!
如果你想要一个有趣的视频/谈话,你可以通过Google I / O会谈观看:The world of ListView我真的建议你看一下:)
答案 1 :(得分:0)
这是因为两个视图都是可滚动的。 您是否已尝试搜索/谷歌搜索?有一千场比赛..
http://www.google.de/search?sourceid=chrome&ie=UTF-8&q=android+listview+in+scrollview
答案 2 :(得分:0)
ListView内置了滚动功能。您无需在ScrollView中再次定义它
答案 3 :(得分:0)
ListViews不应该进入ScrollView。即使你破解,我的意思是大黑客,通过扩展它们并让它们滚动,也可以是itemclickable等等两种观点,最终会破坏某些东西。另外,不要将ListView添加到Scroll 图。
答案 4 :(得分:0)
修改强> 是的android doc说不要将listview用于scrollview,因为两者都有相同的垂直触摸手势。在滚动项目时会出错。还有他们的适配器大小的问题,为什么我们无法看到整个项目。
最后我得到了最好的解决方案,我希望与大家分享。请不要将Listview用于Scrollview,而不是使用LinearLayout并使用View Infaltor绑定您的项目。
<LinearLayout
android:id="@+id/linear_scroll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linear_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/bottom_item"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="5dp"
android:text="@string/androidhub4you" />
</LinearLayout>
</ScrollView>
在你的java类中 -
for (int i = 0; i < mArrayListData.size(); i++) {
/**
* inflate items/ add items in linear layout instead of listview
*/
LayoutInflater inflater = null;
inflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mLinearView = inflater.inflate(R.layout.row, null);
/**
* getting id of row.xml
*/
TextView mFirstName = (TextView) mLinearView
.findViewById(R.id.textViewName);
TextView mLastName = (TextView) mLinearView
.findViewById(R.id.textViewLastName);
/**
* set item into row
*/
final String fName = mArrayListData.get(i).getmFirstName();
final String lName = mArrayListData.get(i).getmLastName();
mFirstName.setText(fName);
mLastName.setText(lName);
/**
* add view in top linear
*/
mLinearListView.addView(mLinearView);
/**
* get item row on click
*
*/
mLinearView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Clicked item;" + fName,
Toast.LENGTH_SHORT).show();
}
});
}
Read more: http://www.androidhub4you.com/2014/03/android-listview-into-scrollview-issue.html#ixzz2xc7Ag74u
答案 5 :(得分:0)
我已经使用xml以下测试过了。但仍尝试处理ScrollView和ListView之间的onTouchEvent函数。您可以点击here查看原始解决方案。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:quilt="http://schemas.android.com/apk/res-auto"
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/inner_listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</ScrollView>