android - 用于调整大小的 LinearLayout layout_weight 和 weight_sum?

标签 android android-layout android-layout-weight

我有 5 个 LinearLayouts。为了便于书写和理解,我将它们称为 View A - E。

View A 是 View B、C、D 和 E 的父 View 。

我已将 View A 的布局权重设置为 8.0f, View B - E 的权重分别设置为 1.0f、3.0f、1.0f、3.0f。

我知道这是为了管理父 View 中的空白空间,但我希望调整我的 View 和 subview 的大小以拥有一定比例的屏幕,而不是仅仅争夺可用空间。

但是,这都是通过编程完成的,所以我应该将 LinearLayouts 的高度设置为其父级( View A)的 getHeight() 方法/访问器的系数吗?如果是这样,那么如果尚未将 View 添加到它的父级(将使用 MATCH_PARENT 设置其高度),我如何获得父级的高度?

由于 getHeight() 方法将为 onCreateonStart 和第一个 onResume 返回 0,我不得不继续寻找答案。我找到了 ViewTreeObserverOnGlobalLayoutListener,当设置了 Layout 时,它们会通知我。但是,我真的很感激在任何绘图发生之前获得高度。这不可能吗?

最佳答案

如果您不需要以编程方式执行此操作,则可以在 xml 中执行。为了让子 LinearLayouts 占据父 LinearLayout (LinearLayout A) 的百分比,那么您需要设置父 weightSum=(Total layout_weight of child LinearLayouts) 然后将子 LinearLayouts 宽度/高度属性设置为“0dip”和将它们的 layout_weight 设置为所需的百分比。

垂直方向的示例代码为:

<LinearLayout
     android:id="@+id/A"
     android:layout_height="fill_parent"
     android:layout_width="fill_parent"
     android:weightSum="8.0"
     android:orientation="vertical">
     <LinearLayout
          android:id="@+id/B"
          android:layout_height="0dip"
          android:layout_width="fill_parent"
          android:layout_weight="1.0"/>
     <LinearLayout
          android:id="@+id/C"
          android:layout_height="0dip"
          android:layout_width="fill_parent"
          android:layout_weight="3.0"
</LinearLayout>

关于android - 用于调整大小的 LinearLayout layout_weight 和 weight_sum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512420/

相关文章:

android - Ubuntu - Jenkins 无法访问安装的硬盘

android - 在 Android 中构建用户界面 - View 与 XML

java - 软键盘覆盖底部工作表对话框

android - 为什么相同的 layout_weight 导致 Android ImageButton 和 Button 的宽度不同?

android - 在 Jetpack compose 中定义 View 权重的问题

android - Cordova Firebase 插件通知 - 无法添加任务 ':processDebugGoogleServices',因为该名称的任务已存在

android - Root 但 su 说 "Permission denied"

android - 如何将自定义字体添加到 TextView 并证明它的合理性

java - Android - 布局 xml 中 EditText 大小的问题