4

展開したときにexpandableListViewグループを一番上に配置する方法を探しています。onGroupExpand、またはExpandableListViewのperformItemClickで試しました。

setSelectedPositionFromTop(int、int)は部分的に機能しますが、システムが独自のスクロールを開始したときに開始すると、リストがオーバースクロールされ、グループが画面外になります。

説明が面倒で申し訳ありませんが、必要なものを正確に示さずに言うのは難しいです。

4

5 に答える 5

5

トランスクリプトモードを無効に変更します。

android:transcriptmode="disabled"

拡張可能なリストレイアウトで。

于 2013-09-13T10:38:18.077 に答える
3

これをアダプタに入れます:

public void onGroupExpanded(final int groupPosition) {
     super.onGroupExpanded(groupPosition);

     listView.setSelectedGroup(groupPosition);
}
于 2014-07-17T20:33:45.153 に答える
1

onGroupExpand(int groupPosition)でsetSelection(groupPosition)を試してください。

于 2012-11-06T08:45:27.180 に答える
1

私は多くの解決策を試しましたが、以下のコードが私のために機能します。このコードが誰かのために役立つことを願っています.onGroupExpandでOnGroupExpandListenerを実装し、以下のコードを使用します

public void onGroupExpand(final int groupPosition) {
    super.onGroupExpand(groupPosition);

    expandableListView.post(new Runnable() {

        @Override
        public void run() {
            expandableListView.setSelection(groupPosition);
            if(expandableListView.getChildAt(groupPosition)!=null)
            expandableListView.requestChildRectangleOnScreen(expandableListView.getChildAt(groupPosition),
                    new Rect(0, 0, expandableListView.getChildAt(groupPosition).getRight(), expandableListView.getChildAt(groupPosition).getHeight()), false);
        }
    });
}
于 2015-03-24T12:04:48.923 に答える
-4

私にはこの問題の解決策があります。穏やかなものではありませんが、かなりうまく機能します。拡張可能なlistViewは、子番号で移動する必要があることを示しています。システムは子が親(グループ)と同じ高さであると見なしているようです。そのため、異なるサイズの子を配置すると、自動スクロールリストで問題が発生します。

私の解決策は、リストをだまして、より多くの子がいると考えることでした。私の子供がグループの2倍の大きさの場合、グループに2人の子供がいるという情報を返すだけです。さて、これはデータ構築リストなので、自分のデータをチェックします。2人の子のデータがありますか、2人目の子のデータがない場合は、1人だけです。子。

私が小さなグループで、そして1人の大きな子供よりもリストを作成しなければならなかったとき、それはうまくいきました。

私の質問に対する答えがなかったので、私はこれを投稿します、それは誰かを助けるかもしれません。

于 2012-10-31T13:36:43.277 に答える