1

ExpandableListViewの子をアニメーションで表示させようとしています。Android 2.2 APIを使用しているため、expandGroup(int groupPos、boolean animate)メソッドを使用できません

ここから取得したアニメーションを使用しています:Androidアニメーションのドロップダウン/アップビューが適切

そして、ExpandableListViewアダプタのgetChildViewメソッドで次のようにconvertViewに設定しています。

public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
        View convertView, ViewGroup parent) {

           ...

    ExpandCollapseAnimation animation = new ExpandCollapseAnimation(convertView, 500, 0);
    convertView.setAnimation(animation);
    return convertView;
}

ExpandableListViewのグループをクリックすると、最初にアニメーションのないすべての子が表示され、次に必要に応じてすべての子に対してすぐに展開アニメーションが実行されます。

アニメーションだけを表示するために必要です。どんな助けでもとても素晴らしいでしょう。

4

1 に答える 1

0

要するに、それは非常に難しく、多くの人がこれを行うことはできないと言います. これは、Android ListView/ExpandableListView の数少ない欠点の 1 つです。お気づきのように、ExpandableListView で expandGroup(int groupPosition) メソッドを呼び出すと、アニメーション化するかどうかのブール値である 2 番目のパラメーターを持つメソッドがあります。この 2 番目のアニメーション メソッドは、API レベル 14 以降で使用されていますが、Android 2.3.3 以下で子ビューをアニメーション化したい場合にはあまり役に立ちません。

子を表示してアニメーション化する理由は、Java では各行が次々に実行されるためです。グループ ビューを展開すると、次の行がアニメーションの行になります。それがJavaのやり方です。ただし、グループ ビューの子を適切にアニメーション化するには、ExpandableListView クラス自体のメソッドをオーバーライドする必要があります。手間がかかるのでオススメしません

私が遭遇した最善の回避策は、最初に子の高さを 0 ピクセルに設定することです。このように、Android OS がビューをレイアウトすると、そこにないように見えます。次に、子供を 0 ピクセルの高さから希望の高さまでアニメーション化します。それが役立つことを願っています!

于 2012-10-04T17:13:51.873 に答える