具有预定义宽度的水平子项的线性布局
Linearlayout with horizontal children with predefined width
我有一个简单的布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:weightSum="1"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
>
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_weight="0.25"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_weight="0.25"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_weight="0.25"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_weight="0.25"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
</LinearLayout>
看起来像这样:
如上所示,问题是“50dp”的预定义按钮宽度不会用作 layout_weight
属性,出于某种原因,总是会更正尺寸,使宽度完全适合线性布局。我想要的是,不是宽度被更正,而是 4 个按钮之间的边距,宽度保持不变。
所以它应该看起来更像这样:
可以使用 layout_weight
属性解决这个问题吗?
试试这个:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
>
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
</LinearLayout>
使用 space 是正确的方法
layout_weight
不会解决你的问题。为你的 com.google.android.material.button.MaterialButton
放一个 layout_marginRight
和 layout_marginLeft
说 20dp
而不是为你的 <LinearLayout />
我有一个简单的布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:weightSum="1"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
>
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_weight="0.25"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_weight="0.25"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_weight="0.25"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_weight="0.25"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
</LinearLayout>
看起来像这样:
如上所示,问题是“50dp”的预定义按钮宽度不会用作 layout_weight
属性,出于某种原因,总是会更正尺寸,使宽度完全适合线性布局。我想要的是,不是宽度被更正,而是 4 个按钮之间的边距,宽度保持不变。
所以它应该看起来更像这样:
可以使用 layout_weight
属性解决这个问题吗?
试试这个:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="30dp"
>
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
<Space
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.button.MaterialButton
android:layout_width="50dp"
android:layout_height="50dp"
android:backgroundTint="@color/BrightYellowCrayola"
android:insetLeft="0dp"
android:insetTop="0dp"
android:insetRight="0dp"
android:insetBottom="0dp"
android:padding="0dp"
app:icon="@drawable/outline_two_wheeler_24"
app:iconGravity="textStart"
app:iconPadding="0dp"
app:iconSize="24dp"
app:iconTint="@null"
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.MyApp.Button.Circle" />
</LinearLayout>
使用 space 是正确的方法
layout_weight
不会解决你的问题。为你的 com.google.android.material.button.MaterialButton
放一个 layout_marginRight
和 layout_marginLeft
说 20dp
而不是为你的 <LinearLayout />