23

ExpandableListView内部に aがありNestedScrollViewます(はい、別のスクロールビュー内にスクロールビューを配置するのは良くありませんが、他に何をすべきかわかりません。誰かがより良いアプローチを知っている場合は教えてください)。

のコンテンツのサイズNestedScrollViewはまだ画面内にあるためスクロールしませんが、ExpandableListViewを展開するとコンテンツが画面の外にはみ出しますが、NestedScrollViewそれでもスクロールしません。

これが私のNestedScrollViewレイアウトです:

<NestedScrollView>
    <LinearLayout>
        <LinearLayout></LinearLayout>
        ... // About 3 of the LinearLayouts
        <ExpandableListView/>
    </LinearLayout>
</NestedScrollView>
4

5 に答える 5

79

次のメソッドをオーバーライドすることで、任意のorまたはNonScrollExpandableListViewの非スクロール プロパティを実現できます。LisviewGridViewExpandableListView

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
            Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
    ViewGroup.LayoutParams params = getLayoutParams();
    params.height = getMeasuredHeight();
} 

したがって、使用NonScrollExpandableListViewするには、1 つのカスタム クラスを作成する必要があります。

public class NonScrollExpandableListView extends ExpandableListView {

    public NonScrollExpandableListView(Context context) {
        super(context);
    }

    public NonScrollExpandableListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public NonScrollExpandableListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
        ViewGroup.LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();
    }
}

そして、それを次のように使用します。

<com.example.extraclasses.NonScrollExpandableListView 

    android:layout_width="match_parent"
    android:layout_height="wrap_content" /> 

ハッピーコーディング。

于 2016-06-03T04:23:41.157 に答える
7

android:nestedScrollingEnabled="true"ExpandalbleListView レイアウトに追加します。

于 2017-08-22T22:14:36.660 に答える
0

スクロールビュー内でリストビュー、グリッドビュー、または展開可能なリストビューを使用することはできません。スクロールビュー内で拡張可能なリストビューを使用したくない場合は、拡張可能なリストビューに一定の高さを与える必要があります。

于 2016-06-03T04:06:07.877 に答える