【问题标题】:make same space between button in linearlayout在线性布局中的按钮之间留出相同的空间
【发布时间】:2019-07-24 11:45:12
【问题描述】:

我有按钮,我想在所有按钮之间放置相同的空间,所以如果我在平板电脑中运行应用程序,按钮之间的空间将相等,我使用的是线性布局,我知道有 layout_weight 选项,但我不想拉伸图标

例如

我的xml代码在下面

  <LinearLayout
        android:id="@+id/shareLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnRequestAPrescriptionRefill"
        android:layout_marginTop="10dp" >

        <Button
            android:id="@+id/btnFacebook"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_facebook" />

        <Button
            android:id="@+id/btnYoutube"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_youtube" />

        <Button
            android:id="@+id/btnTwitter"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_twitter" />

        <Button
            android:id="@+id/btnPintrest"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_pintrest" />
    </LinearLayout>

【问题讨论】:

    标签: android android-linearlayout


    【解决方案1】:

    您可以使用 layout_weight。但是就像你说的Buttons will be stretched,所以不要在按钮上使用权重,而是在空格(视图)上使用。

        <Button
            android:id="@+id/btnFacebook"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_facebook" />
    
        <View
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1" />
    
        <Button
            android:id="@+id/btnYoutube"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_youtube" />
    
        <View
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1" />
    
        <Button
            android:id="@+id/btnTwitter"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_twitter" />
    
        <View
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1" />
    
        <Button
            android:id="@+id/btnPintrest"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/btn_pintrest" />
    </LinearLayout>
    

    【讨论】:

    • 你的答案终于适合了:)
    • 非常感谢 Archie.bpgc
    • 好答案。小改进:使用 而不是 以使您在 XML 中的目标更清晰。跨度>
    【解决方案2】:

    为了使您在 XML 中的意图更清晰,请使用 &lt;Space&gt; 而不是 &lt;View&gt;,如下所示:

      <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@color/Blue"
            android:orientation="horizontal" >
    
           <Space
               android:layout_width="0dp"
               android:layout_height="1dp"
               android:layout_weight="1" >
           </Space>
    
           <Button
               android:id="@+id/btnFacebook"
               android:layout_width="50dp"
               android:layout_height="50dp"
               android:background="@drawable/btn_facebook" />
    
            <Space
                android:layout_width="0dp"
                android:layout_height="1dp"
                android:layout_weight="1" >
            </Space>
    
    ...and repeat with the rest of your buttons...
    
    </LinearLayout>
    

    【讨论】:

      【解决方案3】:

      layout_weight 分配给每个Button 1,它将划分所有空间

      【讨论】:

        【解决方案4】:

        替换每个按钮
        <RelativeLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            >
            <Button
                android:id="@+id/btnFacebook"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:background="@drawable/btn_facebook" />
        </RelativeLayout>
        

        即用RelativeLayoutandroid:layout_weightandroid:gravity 包装每个按钮

        【讨论】:

          【解决方案5】:

          试试这个...

              <Button
                  android:id="@+id/btnFacebook"
                  android:layout_width="50dp"
                  android:layout_height="50dp"
                  android:background="@drawable/btn_facebook" />
          
              <LinearLayout
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_weight="3" />
          
              <Button
                  android:id="@+id/btnYoutube"
                  android:layout_width="50dp"
                  android:layout_height="50dp"
                  android:background="@drawable/btn_youtube" />
          
              <LinearLayout
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_weight="3" />
          
              <Button
                  android:id="@+id/btnTwitter"
                  android:layout_width="50dp"
                  android:layout_height="50dp"
                  android:background="@drawable/btn_twitter" />
          
              <LinearLayout
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_weight="3"/>
          
              <Button
                  android:id="@+id/btnPintrest"
                  android:layout_width="50dp"
                  android:layout_height="50dp"
                  android:background="@drawable/btn_pintrest" />
          

          【讨论】:

          • no deepzz 我已经尝试过你的代码,但它看起来与 layout_weight="1"
          • @SiddhpuraAmit :尝试为这些布局提供宽度 0dp 而不是 wrap_content
          【解决方案6】:

          我会使用表格布局并使用 strechColums="0" 。否则,如果您想坚持线性布局,那么您是否尝试过 space

          【讨论】:

          • 你好克里斯,你可以用 strechColumns 建议我该怎么做
          【解决方案7】:

          试试这个

          在此处插入按钮

          <View
          android:layout_width="0dp"
          android:layout_height="50dp"
          android:layout_weight="1" />
          

          在此处插入按钮

          【讨论】: