2017-05-03 9 views
-1

レイアウトに追加する前にビューの高さと幅を取得する必要があります。私は、ビューのMeasuredHeightとMeasuredWidthを使ってみましたが、そのretursnは0です。これを解決するために私を助けてください。コードスニペットの下ビューの高さと幅を取得するには?

私は試してみました:

int height = Column.MeasuredHeight; 
int width = Column.MeasuredWidth; 
+0

なぜレイアウトを設定する前にそれをしたいですか? –

+0

これを試してくださいhttp://stackoverflow.com/a/9426895/5577679 – tompadre

+0

@tompadre更新をありがとう。 (0、MeasureSpecMode.Unspecified)); int colHeight = Column.MeasuredHeight; このソリューションを使用すると、実際の列の高さが得られません。 – Parthiban

答えて

0

view.getWidth()とview.getHeightを()あなたは0を受信しないようにレイアウト変更イベントを使用する必要が

+0

です。既に試しました。また、0を返します。 – Parthiban

0
View view= LayoutInflater.from(this).inflate(R.layout.activity_main, null, false); 
setContentView(view); 
int viewWidth = view.getWidth(); 
int viewHeight = view.getHeight(); 
+1

あなたのコードで少し説明がうまくいくでしょう。 – Sakuto

1

試してみてください高さとして。 手短に尋ねると、レイアウトはまだ描画されていません。測定するレイアウトのViewTreeObserverを使用します。

LinearLayout linearLayout = FindViewById<LinearLayout>(Resource.Id.linearLayout); 
ViewTreeObserver vto = linearLayout.ViewTreeObserver; 

vto.GlobalLayout += (sender, args) => { 
    System.Console.WriteLine (linearLayout.Height); 
}; 
+0

更新いただきありがとうございます。しかし、このイベントが呼び出された後、私は列の高さを設定します。私はそれ以前にこのイベントに電話する必要があります。 – Parthiban

+0

@Parthiban設定した列の高さをvto.GlobalLayoutに入れることはできませんか? –

+0

私は設定することができます。しかし、このグローバルレイアウトイベントは、私のメソッドが呼び出された後にトリガします。 – Parthiban

関連する問題