2016-04-18 94 views
1

我是新来的android开发人员,目前正处于片段和布局(Xamarin.Android的价值)。以编程方式编排android片段

我在我的主视图的OnCreate方法中以编程方式向我的视图添加了片段。其中一个片段包含导航控件并实现飞越式成语。现在我的问题是,我还没有找到一种方法来制作导航片段的宽度,比如父控件宽度的一半。在每个覆盖中,我已经能够访问布局尚未执行,因此碎片和主视图的宽度都是0.在布局文件中设置碎片的大小并不起作用(既不用于翻译属性,我将需要以相同的方式访问以最初隐藏片段)。 Xamarin/VS抱怨设置大小或将属性转换为字符串(即parent_width等)无效。

我读过的每个片段教程都省略了这一点。

回答

1

如果我正确理解你的问题,你有一个动态添加的片段大小的问题。

如果您能够粘贴代码来概述您如何添加碎片以及尝试使用哪些替代方法,可能会有所帮助。不过,这是一个最好的尝试,无需任何代码即可提供帮助。

有两种方法来确定过去一直使用的动态添加元素的大小。一种是使用基础容器来布局LinearLayout,并动态地为片段指定权重。这将允许您指定您的片段应该轻松地占用部分布局。例如,如果您有片段A和片段B,并且您希望片段A占用布局空间的25%,则可以将它的权重设置为1,将片段B的权重设置为4.您可以找到对动态设置元素权重的支持(如您的片段):How to set layout_weight attribute dynamically from code?

另一种选择是使用OnGlobalLayoutListener,它将在控件布局时“触发”。这将确保当您尝试测量布局以确定其布局的宽度/高度并消耗适当的测量空间时,您将无法返回0.有许多文章概述如何编写代码这个听众分散在整个网络中。 I如果您发现自己经常需要知道控件的布局时间,那么将部分侦听器功能划分出来以便于重用也可能很有用。以下是有关主题为http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html的Android文档的链接。

希望它有帮助。

+0

(I)OnGlobalLayoutListener为我做了诡计。非常感谢你。 –