1

リストビューをアニメーションで展開/折りたたもうとしていますが、次のコードがあります。私が欲しいのは、画面の上部にあるリストビューで、展開して折りたたむことができますが、折りたたむと、リストビューから現在選択されているアイテム (1 つのアイテム、1 つの行) を表示したいだけです。

public static Animation expand(final View v, final boolean expand) {
        try {
            Method m = v.getClass().getDeclaredMethod("onMeasure", int.class,
                    int.class);
            m.setAccessible(true);
            m.invoke(v,
                    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
                    MeasureSpec.makeMeasureSpec(
                            ((View) v.getParent()).getMeasuredWidth(),
                            MeasureSpec.AT_MOST));
        } catch (Exception e) {
            e.printStackTrace();
        }
        final int initialHeight = v.getMeasuredHeight();
        if (expand) {
            v.getLayoutParams().height = 50;
        } else {
            v.getLayoutParams().height = initialHeight;
        }
        v.setVisibility(View.VISIBLE);
        Animation a = new Animation() {
            @Override
            protected void applyTransformation(float interpolatedTime,
                    Transformation t) {
                int newHeight = 50;
                if (expand) {
                    newHeight = (int) (initialHeight * interpolatedTime);
                } else {
                    newHeight = (int) (initialHeight * (1 - interpolatedTime));
                }
                v.getLayoutParams().height = newHeight;
                v.requestLayout();
                if (interpolatedTime == 1 && !expand)
                    v.setVisibility(View.GONE);
            }

            @Override
            public boolean willChangeBounds() {
                return true;
            }
        };
        a.setDuration(500);
        return a;
    }

問題は、折りたたむときに、リストビューを完全に非表示にするのではなく、リストビューの最初の行を表示したいのですが、それを行うコードの部分が見つからないことです。何か助けてください。

よろしくお願いします。

4

0 に答える 0