java - 当布局子项不适合时如何调整 LinearLayout 元素?

标签 java android

例如,我有这些按钮,如下所示:

| [button1] [button2]     |
| [button3] [button4]     |

但是当我添加更多按钮时,它们不适合并且看起来像:

| [button1] [button2]     |
| [button3] [button4] [but|

结果,它水平滚动。

我尝试使用 LayoutParams 来设置布局权重,但我将一些按钮拉长,一些按钮变小,这样就消除了按钮之间的间隙。我也尝试过 ButtonBarLayout 但它改变了按钮的方向,这与我想要的完全不同。

这是我的尝试,无论元素是否合适,它总是对元素进行加权

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
     super.onMeasure(widthMeasureSpec, heightMeasureSpec);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, (int) Utils.dp(getResources(), 96));
     params.weight = 1F;

     int childCount = this.getChildCount();
     for (int i = 0; i < childCount; i++) {
         View view = this.getChildAt(i);
         view.setLayoutParams(params);
     }
}

这是 XML(按钮行太长,无法容纳):

<com.tb24.fn.view.LockerRowLayout
    android:id="@+id/locker_wrap_slots"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <include
        android:id="@+id/locker_slot_wrap1"
        layout="@layout/slot_view" />

    <include
        android:id="@+id/locker_slot_wrap2"
        layout="@layout/slot_view" />

    <include
        android:id="@+id/locker_slot_wrap3"
        layout="@layout/slot_view" />

    <include
        android:id="@+id/locker_slot_wrap4"
        layout="@layout/slot_view" />

    <include
        android:id="@+id/locker_slot_wrap5"
        layout="@layout/slot_view" />

    <include
        android:id="@+id/locker_slot_wrap6"
        layout="@layout/slot_view" />

    <include
        android:id="@+id/locker_slot_wrap7"
        layout="@layout/slot_view" />
</com.tb24.fn.view.LockerRowLayout>

LockerRowLayout 类扩展了 LinearLayout

所以在示例中,我想让布局调整第二行按钮,但让第一行保持不变。我不想让它滚动,而是想让它们的宽度更小并动态截断它们,例如:

| [button1] [button2]     |
| [but.1] [but.2] [but.3] |

最佳答案

您不需要以编程方式设置动态宽度,而是可以在 xml 中一行内的所有按钮中使用 android:layout_weight="1"android:layout_width="0dp" ,这应该自动调整它们的大小以完全适应整个宽度(我的意思是没有溢出)。

关于java - 当布局子项不适合时如何调整 LinearLayout 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497009/

相关文章:

android - 如何检测android中壁纸的方向

java - 如何使用 Jsoup 从跨度类中解析 "text"

Android 线性布局反转

java - Camel : Read and Write from the same directory

java - 如何阻止 JTable 中的列按宽度调整大小?

java - 机器人。在测试套件中,每个下一个测试都受到前一个测试的影响

android - SQLite 中使用的数据类型

android - 增加复选框的大小

java - 阻塞队列 - 为什么没有 notify()

java - Spring MVC @ModelAttribute 方法返回 "Bad request"400