我正在努力获得一个ListView能够滚动。据我所知,它应该是OK的有一个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);
orientation
属性是LinearLayout
所必需的。您需要将其设置为horizontal
或vertical
,即使LinearLayout
只有一个子节点。我认为这可能是你的问题的原因;我已经忘记定向很多次了,它会导致许多奇怪的问题,你的视图如何显示和行为。您可能还想考虑不要在这里使用FrameLayout
作为根视图,因为使用具有多个子视图的FrameLayout
可能会使它们难以正确布局。如果您希望您的三个孩子在水平或垂直的行中,请考虑LinearLayout
。
在linearLayout中放置listview是可以的。
将listView的高度设置为wrap_content是不行的,因为listView包含很多项目,它们都有动态的大小和数量。
google在这节课上讲过这个。请全部观看。
这个问题是因为你的根布局是一个框架布局。
插入linearlayout
<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>