Не получает getHeight () RelativeLayout после установки Visibility Visible от Visiblity GONE

Что я хочу, так это то, что когда я нажимаю кнопку Dashboard Button, она открывается как SlidingDrawer, и после ее открытия при повторном нажатии она закрывается. я использую этот ящик, потому что SlidingDrawer устарел.

теперь проблема в том, что он работает правильно, за исключением первого раза, когда я нажимаю кнопку, он открывается очень быстро, без анимации, но закрывается правильно и после этого работает нормально.

Я обнаружил, что проблема заключается в том, что когда я делаю RelativeLayout Visible и пытаюсь вычислить его getHeight (), он сначала даст ноль, а после этого дает правильную высоту.

вот LogCat:

 Вот мой XML-файл.

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relLayOne"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="#0000" >

    <Button
        android:id="@+id/btnNEWCLICK"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/dashboard" />

    <RelativeLayout
        android:id="@+id/relLayTwo"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnNEWCLICK"
        android:background="#000"
        android:visibility="gone" >

        <Button
            android:id="@+id/loc"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="My Location"
            android:textColor="#fff"
            android:textSize="20sp" />

        <View
            android:layout_width="0.1dp"
            android:layout_height="108dp"
            android:layout_centerInParent="true"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="15dp"
            android:background="#fff" />

        <Button
            android:id="@+id/phot"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="Photos"
            android:textColor="#fff"
            android:textSize="20sp" />

        <View
            android:layout_width="fill_parent"
            android:layout_height="0.1dp"
            android:layout_below="@+id/phot"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#fff" />

        <Button
            android:id="@+id/free"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/loc"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="Free stuff"
            android:textColor="#fff"
            android:textSize="20sp" />

        <Button
            android:id="@+id/leade"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/phot"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="Leaderboard"
            android:textColor="#fff"
            android:textSize="20sp" />

        <View
            android:layout_width="fill_parent"
            android:layout_height="0.1dp"
            android:layout_below="@+id/leade"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#fff" />

        <Button
            android:id="@+id/live"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/free"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="Live Action"
            android:textColor="#fff"
            android:textSize="20sp" />

        <Button
            android:id="@+id/home"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/leade"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="Home"
            android:textColor="#fff"
            android:textSize="20sp" />

        <View
            android:layout_width="fill_parent"
            android:layout_height="0.1dp"
            android:layout_below="@+id/home"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#fff" />

        <Button
            android:id="@+id/app"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/live"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:background="#000"
            android:gravity="left|center_vertical"
            android:paddingLeft="5dp"
            android:text="App stats"
            android:textColor="#fff"
            android:textSize="20sp" />
    </RelativeLayout>

</RelativeLayout>

Вот код ::

public class MoveView extends LinearLayout{
     private Button openCloseButton;
     private boolean isVisible = false;
     private RelativeLayout relLayTwo, relLayOne;
     private float animationHeight = 300.0f;

    public MoveView(Context context , AttributeSet attr) {
        super(context, attr);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.in, this);

        relLayTwo = (RelativeLayout) findViewById(R.id.relLayTwo);
        //relLayOne = (RelativeLayout) findViewById(R.id.relLayOne);
        openCloseButton = (Button) findViewById(R.id.btnNEWCLICK);

        openCloseButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                toggle();
            }
        });

        Log.d("test", "before "+relLayTwo.getHeight());
        if (relLayTwo.getHeight() == 0){
            relLayTwo.setVisibility(View.VISIBLE);
            relLayTwo.invalidate();
            relLayTwo.refreshDrawableState();
            //rel.setVisibility(View.INVISIBLE);
            relLayTwo.setVisibility(View.GONE);
            Log.d("test", "after "+relLayTwo.getHeight());
        }

    }



    public void toggle() {
        TranslateAnimation anim = null;
        isVisible = !isVisible;

        if (isVisible) {
            relLayTwo.setVisibility(View.VISIBLE);
            anim = new TranslateAnimation(0.0f, 0.0f, relLayTwo.getHeight(), 0.0f);
            Log.d("test", " rel Height "+relLayTwo.getHeight());
        } else {
            Log.d("test", " rel Height else "+relLayTwo.getHeight() );
            anim = new TranslateAnimation(0.0f, 0.0f, 0.0f, relLayTwo.getHeight());
            anim.setAnimationListener(collapseListener);
        }

        anim.setDuration(600);
        anim.setInterpolator(new AccelerateInterpolator(1.0f));
        startAnimation(anim);
    }

    Animation.AnimationListener collapseListener = new Animation.AnimationListener() {
        public void onAnimationEnd(Animation animation) {
            relLayTwo.setVisibility(View.GONE);
        }

        public void onAnimationRepeat(Animation animation) {
            // not needed
        }

        public void onAnimationStart(Animation animation) {
            // not needed
        }
    };
}

используя метод onMeasure ().

@
Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // TODO Auto-generated method stub
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        Log.d("test", " RelativeLAyout In onMeaseure "+relLayTwo.getHeight() );

    }

Ответы на вопрос(4)

Ваш ответ на вопрос