以编程方式布局 android 个片段

Layouting android fragments programmatically

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

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

我读过的所有片段教程都忽略了这一点。

如果我对您的问题的理解正确,那么您遇到的是动态添加的片段的布局大小问题。

如果您能够粘贴概述如何添加片段以及尝试使用哪些覆盖方法的代码,这可能会有所帮助。但是,这是在没有看到任何代码的情况下提供帮助的最佳尝试。

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

另一种选择是使用 OnGlobalLayoutListener,它会在控件布局时 "fire"。这将确保当您尝试测量布局以确定它的 width/height 它已经布局并使用适当的 space 进行测量并且您不会返回 0。有许多文章概述如何为这个散布在网络上的监听器编写代码。 I 如果您发现需要经常知道控件何时布局,则将一些侦听器功能子类化以便于重用也可能很有用。这是关于 http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html.

主题的 Android 文档的 link

希望对您有所帮助。