首先,我在Xamarin for Android app中编写代码。
我试过的就是这个。
frame.AddView(background, LayoutParams.MatchParent, textViewA.Height);
frame.AddView(textViewA, LayoutParams.MatchParent, LayoutParams.WrapContent);
1)背景是具有背景的视图。
2)在设置了帧(FrameLayout的实例)后,我将此布局添加到TableRow
问题在于此。由于 textViewA.Height的值为0 ,我无法看到背景。
如果我将textViewA.Height更改为 LayoutParams.WrapContent 或 LayoutParams.MatchParent ,则背景将覆盖孔页。
如果我将textViewA.Height更改为15,则背景将覆盖textView的一部分。
所以,(我认为)我必须知道textViewA的高度值的大小才能显示背景。 怎么做?帮助我。
答案 0 :(得分:2)
我必须知道textViewA的高度值的大小才能显示背景。怎么做?
我们无法直接获取TextView的高度,因为到那时甚至可能都没有测量TextView。
如果您真的想获得textViewA的高度,请尝试以下代码
ViewTreeObserver vto = textViewA.ViewTreeObserver;
vto.GlobalLayout += (sender, args) =>
{
myTextViewHeight = textViewA.Height;
};
但是你在FrameLayout中测量textViewA。当你得到" myTextViewHeight"你的布局已经过测量。在将其添加到FrameLayout
之前,您仍将获得0高度作为解决方法
你可以设置" textViewA.Height"在添加FrameLayout
您可以将您的背景添加为默认值:
frame.AddView(textViewA, LayoutParams.MatchParent, LayoutParams.WrapContent);
frame.AddView(background);
顺便说一下,如果你只需要设置你的桌子的背景,在你的桌子中添加背景中的textview或者只是设置tablerow背景可能是更好的选择。