我正在努力让ListView能够滚动。据我所知,在LinearLayout中有一个ListView应该没问题,为什么不滚动?
这是布局
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ListView
android:id="@+id/listView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
<include layout="@layout/tab3" />
<include layout="@layout/tab1" />
</FrameLayout>
这里是我填充内容的地方..
File folder = new File(Environment.getExternalStorageDirectory().getPath()+"/Download/");
File[] listOfFiles = folder.listFiles();
ArrayAdapter<String> arrayadp = new ArrayAdapter<String>(this, R.layout.list_files);
for (File file : listOfFiles) {
if (file.isFile()) {
String extension = "";
String filename = file.getName();
int i = filename.lastIndexOf('.');
if (i > 0) {
extension = filename.substring(i+1);
}
if(extension.equalsIgnoreCase("wav")){
arrayadp.add(filename);
}
}
}
ListView listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(arrayadp);
答案 0 :(得分:0)
orientation
需要LinearLayout
属性。即使horizontal
只有一个孩子,您也需要将其设置为vertical
或LinearLayout
。我想这可能是你问题的原因;我已经多次忘记了方向,它可能会导致你的视图显示和行为方式出现许多奇怪的问题。您可能还想考虑不在此处使用FrameLayout
作为您的根视图,因为拥有多个子项的FrameLayout
可能会使其难以正确布局。如果您希望您的三个孩子处于水平或垂直行,请考虑LinearLayout
。
答案 1 :(得分:0)
可以将listview放在linearLayout中。
将listView的高度设置为wrap_content是不行的,因为listView包含很多项目,都具有动态大小和数字。
谷歌已经在this lecture上讨论了这个问题。请仔细观察。它也可以帮助你解决其他问题。答案 2 :(得分:0)
此问题是因为您的根布局是FrameLayout。
插入linearlayout root
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ListView
android:id="@+id/listView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
<include layout="@layout/tab3" />
<include layout="@layout/tab1" />
</FrameLayout>
</LinearLayout>