【问题标题】:Linearlayout with horizontal children with predefined width [duplicate]具有预定义宽度的水平子项的线性布局[重复]
【发布时间】:2021-10-01 21:42:38
【问题描述】:

我有一个简单的布局:

<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_weightattribute 可以解决这个问题吗?

【问题讨论】:

    标签: android material-design android-linearlayout margin android-button


    【解决方案1】:

    试试这个:

    <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>
    

    使用空间是要走的路

    【讨论】:

      【解决方案2】:

      layout_weight 不会解决您的问题。将layout_marginRightlayout_marginLeft 用于您的com.google.android.material.button.MaterialButton20dp,而不是您的&lt;LinearLayout /&gt;

      【讨论】:

        猜你喜欢
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-26
        • 2015-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多