以编程方式布局android片段

时间:2016-04-18 18:30:54

标签: android android-fragments xamarin.android

我是Android开发的新手,目前正在努力处理片段和布局(Xamarin.Android的价值)。

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

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

1 个答案:

答案 0 :(得分: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文档的链接。

希望它有所帮助。