LinearLayout视图排列

时间:2016-02-19 02:13:45

标签: android android-layout user-interface

我需要在水平方向均匀排列4 FloatingActionButton个。

在SO上阅读了很多答案之后,最好的方法是将它们放在LinearLayout layout_width 0dp的所有按钮中layout_weight的{​​{1}}。经过多次尝试,1的{​​{1}}从未奏效。

这就是我的所作所为:

layout_width

使用 API 21(Android 5.0.1)在Android Studio(v1.5.1)中进行渲染,如下所示:

enter image description here

...并且使用 API 17(Android 4.2.2),就像这样(FAB中的图像在物理设备上正确显示,所以这不是问题):

enter image description here

我的问题是:

  • 为什么按钮在API 21中没有统一布局?
  • 无论API如何,均匀分布(实际上,整体一致性)怎么样?
  • 如何摆脱API 21中与按钮接壤的丑陋线条?

非常感谢提前!

Nolly J提供以下答案,这就是API 21上的布局看起来如何 ,并且在API 17上也是如此。

enter image description here

2 个答案:

答案 0 :(得分:1)

正在发生的事情是你看到如何在棒棒糖前对FAB进行提升。

简而言之,在v21之前的API级别上的所有FAB都具有16dp填充,其中v21 +上的FABS具有0dp填充。这是为了支持提升前棒棒糖。

您应该能够在styles-v21中添加16dp左/右填充,并将其作为填充应用到您的FAB。

答案 1 :(得分:0)

- "无论API和#34;如何实现均匀分配?

我已经使用layout_weight

以四个水平列放置的方式重新创建了LinearLayout
<LinearLayout
    android:id="@+id/toolbarBack"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rlDetailLayoutBack"
    android:layout_marginTop="4dp"
    android:layout_centerHorizontal="true"
    android:orientation="horizontal"
    android:weightSum="4">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="8dp"
        android:gravity="center|center_horizontal"
        android:orientation="vertical">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabDirections"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/direction1"
            android:borderWidth="0dp"
            android:elevation="8dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="8dp"
        android:gravity="center|center_horizontal"
        android:orientation="vertical">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabCallMobile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/mobile"
            android:borderWidth="0dp"
            android:elevation="0dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="8dp"
        android:gravity="center|center_horizontal"
        android:orientation="vertical">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabCallLandline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/landline"
            android:borderWidth="0dp"
            android:elevation="0dp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center|center_horizontal"
        android:padding="8dp"
        android:orientation="vertical">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabWebsite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/website1"
            android:borderWidth="0dp"
            android:elevation="0dp"/>

    </LinearLayout>

有关其他问题,请参阅@Charles Durham解决方案