为什么我的ListView与ArrayAdapter不能滚动



我正在努力获得一个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所必需的。您需要将其设置为horizontalvertical,即使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>

最新更新