您的位置:首页 > 移动开发 > Android开发

Android 中ScrollView 只显示一行的问题

2016-02-02 10:29 375 查看

Android 中ScrollView 只显示一行的问题

在Android中规定不允许将两个ScrollView类型的控件相互嵌套,而Listview是属于ScrollView类型的,而我们在ScrollView中嵌套Listview则需要在Listview外面放一个LinearLayout。下面看具体的解决方法:

在activity_main.xml中设置

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.lulsys.scroll.MainActivity" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
</LinearLayout>

</ScrollView>


接下来就是MianActivity中的代码

public class MainActivity extends Activity {

private ListView lv;
private String[] data = { "数据1", "数据2", "数据3", "数据3", "数据4", "数据5", "数据6", "数据7", "数据8", "数据9", "数据10" };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
lv.setAdapter(adapter);

int totalHegiht = 0;
//获得listview的条数
int len = adapter.getCount();
for (int index = 0; index < len; index++) {
View listviewItem = adapter.getView(index, null, lv);
// 计算子项view的高度
listviewItem.measure(0, 0);
// 计算所有子项的高度和
totalHegiht += listviewItem.getMeasuredHeight();
}
//获得listview的LayoutParams
ViewGroup.LayoutParams params = lv.getLayoutParams();

// 设置listview完全显示的高度
params.height = totalHegiht + (lv.getDividerHeight() * (adapter.getCount() - 1));
lv.setLayoutParams(params);
}

}


这样问题就解决啦!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android listview