2016-12-07 17 views
0

私の目的は、特定のボタンをクリックするとアニメーションで表示される目に見えないLinearLayoutを持たせることです。これを行うには、デフォルトの高さをWRAP_CONTENTに設定し、アプリケーションの開始時に高さを取得し、高さを0に設定して、ボタンをクリックするとアニメーションを開始します。ここにコードです:WRAP_CONTENTの高さを取得する

linearLayout.post(new Runnable() { 
    @Override 
    public void run(){ 
     height = linearLayout.getMeasuredHeight(); 
     linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0)); 
    } 
}); 


findViewById(R.id.btnOperator).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Animation ani = new ShowAnim(linearLayout, height/* target layout height */); 
     ani.setDuration(1000/* animation time */); 
     linearLayout.startAnimation(ani); 

    } 
}); 

この作品はかなり良いですが、私は違うやりたいです。私は、デフォルトの高さが0であることを求めており、その後、WRAP_CONTENTの高さがどうなるかを計算し、それを渡す:

Animation ani = new ShowAnim(linearLayout, height/* target layout height */); 

私はこれをどのように行うことができますか?私は検索したが、何かを見つけた。

答えて

2

は、このコードを試してみてください。

linearLayout.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
height = linearLayout.getMeasuredHeight(); 
+0

それは完璧に動作し、感謝します。 –

関連する問題