2016-12-06 9 views
0

まず、Androidアプリケーション用のXamarinでコードを書いています。レイアウトでレンダリングする前にTextViewの高さを取得

私が試したのはこれです。

frame.AddView(background, LayoutParams.MatchParent, textViewA.Height); 
frame.AddView(textViewA, LayoutParams.MatchParent, LayoutParams.WrapContent); 

1)バックグラウンドはバックグラウンドを持つビューです。

2)フレームでframeLayoutの(インスタンス)が設定された後、私は

問題があるとのTableRowには、このレイアウトを追加します。 textViewA.Heightの値は0なので、背景が見えません。 enter image description here

私はLayoutParams.WrapContentまたはLayoutParams.MatchParentにtextViewA.Height変更する場合は、背景が穴のページをカバーしています。

enter image description here

そして、私は15にtextViewA.Heightを変更すると、背景がのTextViewの一部を覆います。だから、

enter image description here

、(と思う)私は、背景を表示するためにtextViewAの高さの値の大きさを知っている必要があります。 どうすればいいですか?助けて。

答えて

1

背景を表示するには、textViewAの高さの値を知る必要があります。どうやってするの?

TextViewの高さは、その時点までに測定されていない可能性があるため、直接取得できません。

あなたが本当にtextViewAの高さを取得したい場合は

ViewTreeObserver vto = textViewA.ViewTreeObserver; 
vto.GlobalLayout += (sender, args) => 
{ 
    myTextViewHeight = textViewA.Height; 
}; 

次のコードを試してみてくださいしかし、あなたはでframeLayoutでtextViewAを測定してください。 "myTextViewHeight"を取得すると、レイアウトが測定されます。あなたは回避策としてでframeLayout

でそれを追加する前に、あなたはまだ0の高さを取得します

  1. 追加することができますあなたがでframeLayoutに追加する前に、「textViewA.Height」を設定することができます

    デフォルトとしてあなたの背景:ところで

    frame.AddView(textViewA, LayoutParams.MatchParent, LayoutParams.WrapContent); 
    frame.AddView(background); 
    

、あなたのタブローの背景を設定するだけなら、タブローに背景を追加するか、タブロー背景を設定するほうが良いでしょう。

+0

ありがとう、ありがとうございます! – wallah

関連する問題