1

ここでは、linearlayoutでscrollviewを使用していますが、scrollviewlinearlayout内に別のリストビューを含めたいと思います。

Scrollviewは1人の子をサポートします。scrollview内のlistviewが機能していないことはわかっていますが、listviewを使用する他のオプションはあります。すべてのコンテンツをスクロールしたいと思います。

<?xml version="1.0" encoding="utf-8"?>
    <ScrollView
        android:id="@+id/widget54"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        >
        <LinearLayout
            android:layout_width="310px"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            >
            <Button
                android:id="@+id/button1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Button 1"
                />
            <Button
                android:id="@+id/button2"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Button 2"
                />
            <Button
                android:id="@+id/button3"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Button 3"
                />
            <EditText
                android:id="@+id/txt"
                android:layout_width="fill_parent"
                android:layout_height="300px"
                />
            <Button
                android:id="@+id/button4"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Button 4"
                />

        </LinearLayout>
    </ScrollView>
4

2 に答える 2

1

ScrollView内のListViewはかなり確実に機能していません。

私が考えることができる唯一の方法は、インターフェイスにリストビューが1つしかないことです。そして、そのためのカスタムアダプタを作成します。

public class HeaderAdapter{
    private Adapter mAdapter; // this adapter is the adapter that you will normally have, for your listview

    getViewTypeCount(){
        return mAdapter.getViewTypeCount() + 1;
    }

    getView(int pos, View convertView){
        // Handle only the first position, othervise, let mAdapter return
        if (pos!=0) return mAdapter.getView(pos-1, convertView);

        // 
        View v = LayoutInflater.inflate(R.layout.other_linear_layout);
        // Bind the v if necessary

        return v;
    }
}

上記は単なる例です。残りのコンテンツ(linearlayouts、buttons、edittextなど)をアダプターの「ヘッダー」行として扱うという考えです。

于 2012-06-08T05:40:24.197 に答える
0

ScrollViewにListViewが1つしかない場合は、レイアウトXMLのScrollViewに属性を追加できます android:fillViewport="true"

これにより、ListViewのすべてのコンテンツが展開されます。

それ以外の場合、ScrollViewに複数のListViewまたはGridViewがある場合は、customListViewを作成する必要があります。

ListViewと@OverrideonMeasureを拡張します。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
}
于 2016-03-06T09:21:20.933 に答える