【问题标题】:Android layout - How to make the controls appear to the left/right without padding?Android布局 - 如何使控件显示在左/右而不填充?
【发布时间】:2016-02-17 23:51:26
【问题描述】:

我在屏幕上定义了 3 个控件,按以下顺序排列: 按钮 - 文本视图 - 按钮

我想把第一个按钮放在左边,把textView放在中间。第二个按钮应该在右侧。

但是,我找不到一种方法来强制按钮粘在左侧/右侧,而 textView 也粘在中间。

这是代码:

 <LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="&lt;&lt;"
        android:id="@+id/button2" />

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/TodayDataTextView"
    android:text="Today Data"
    android:textAlignment="center"
    android:textColor="#0000ff"
    android:background="#00000000"
    android:layout_margin="5dp"
    android:textSize="20dp"
    android:textStyle="bold|italic" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=">>"
        android:id="@+id/button" />

</LinearLayout>

这是截图:

这就是我想要的(没有填充):

【问题讨论】:

  • 在第二个按钮部分的xml文件中添加这个 --> android:layout_alignParentRight="true"
  • 使用 weightSum 和 layout_weight

标签: android layout padding


【解决方案1】:

将所有三个小部件的布局重力和重力分别设置为左、中和右

【讨论】:

    【解决方案2】:

    你可以试试RelativeLayout。像这样:

       <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="&lt;&lt;"
                android:layout_alignParentLeft="true"
                android:id="@+id/button2" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/TodayDataTextView"
                android:text="Today Data"
                android:textAlignment="center"
                android:layout_centerHorizontal="true"
                android:textColor="#0000ff"
                android:background="#00000000"
                android:layout_margin="5dp"
                android:textSize="20dp"
                android:textStyle="bold|italic" />
    
            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=">>"
                android:layout_alignParentRight="true"
                android:id="@+id/button" />
    
        </RelativeLayout>
    

    【讨论】:

      【解决方案3】:

      试试这个代码:

      <RelativeLayout
      android:orientation="horizontal"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      xmlns:android="http://schemas.android.com/apk/res/android">
      
      <Button
          style="?android:attr/buttonStyleSmall"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="&lt;&lt;"
          android:id="@+id/button2"
          android:layout_alignParentTop="true"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true" />
      
      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/TodayDataTextView"
          android:gravity="center_vertical"
          android:text="Today Data"
          android:textAlignment="center"
          android:textColor="#0000ff"
          android:background="#00000000"
          android:textSize="20dp"
          android:textStyle="bold|italic"
          android:layout_centerVertical="true"
          android:layout_centerHorizontal="true" />
      
      <Button
          style="?android:attr/buttonStyleSmall"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text=">>"
          android:id="@+id/button"
          android:layout_alignParentTop="true"
          android:layout_alignParentRight="true"
          android:layout_alignParentEnd="true" />
      

      输出:

      【讨论】:

        【解决方案4】:
        1. 请使用相对布局而不是线性布局。
        2. 添加到按钮

          android:layout_alignParentLeft="true"

          android:layout_centerVertical="true"

        3. 添加到文本视图

          android:layout_centerHorizo​​ntal="true"

          android:layout_centerVertical="true"

        4. 添加到右侧按钮

          android:layout_alignParentRight="true"

          android:layout_centerVertical="true"

        【讨论】:

        • 我也打算推荐这个,但是 TextView 最终会浮动到屏幕顶部(并且相对于按钮没有垂直居中)。您可以尝试使用边距解决此问题,但这很麻烦。线性布局可以很容易地保持所有三个对齐。
        【解决方案5】:

        您可以使用布局权重来准确获取您要查找的内容:

        <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="&lt;&lt;"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                />
        
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Today Data"
                android:textAlignment="center"
                android:textStyle="bold|italic"
                />
        
            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="&lt;&lt;"
                android:id="@+id/button"
                />
        

        请记住,Android 在确定布局中组件的大小和位置时会进行两次传递。第一遍使用layout_widthlayout_height 设置。在这种情况下,大多数小部件都是wrap_content,这将使它们成为“自然”大小以适应其内容。第二遍使用layout_weight 属性分配任何剩余的像素。鉴于这是一个水平线性布局,这些像素将分配给小部件的水平尺寸。只有TextView指定了权重属性,所以会得到100%的剩余像素。

        【讨论】:

          【解决方案6】:
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
          
              <LinearLayout
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="0.20"
                  android:gravity="left">
          
                  <Button
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="<<" />
              </LinearLayout>
          
              <LinearLayout
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center"
                  android:layout_weight="0.60"
                  android:gravity="center">
          
                  <TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:gravity="center"
                      android:text="data"
                      android:textSize="18sp" />
              </LinearLayout>
          
              <LinearLayout
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="0.20"
                  android:gravity="right">
          
                  <Button
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="<<" />
              </LinearLayout>
          </LinearLayout>
          

          【讨论】:

            【解决方案7】:

            这也有效

            <LinearLayout
                android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:weightSum="5">
            
                <Button
                    style="?android:attr/buttonStyleSmall"
                    android:layout_width="0sp"
                    android:layout_weight="1"
                    android:layout_height="fill_parent"
                    android:layout_alignParentLeft="true"
                    android:text="&lt;&lt;"
                    android:id="@+id/button2" />
            
            
                <TextView
                    android:layout_width="0sp"
                    android:layout_weight="3"
                    android:layout_height="wrap_content"
                    android:id="@+id/TodayDataTextView"
                    android:text="Today Data"
                    android:textAlignment="center"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:textColor="#0000ff"
                    android:background="#00000000"
                    android:layout_margin="5dp"
                    android:textSize="20dp"
                    android:textStyle="bold|italic" />
            
                    <Button
                        style="?android:attr/buttonStyleSmall"
                        android:layout_width="0sp"
                        android:layout_weight="1"
                        android:layout_height="wrap_content"
                        android:layout_marginRight="15dp"
                        android:text=">>"
                        android:id="@+id/button" />
            
            </LinearLayout>
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-06-09
              • 2019-03-13
              • 1970-01-01
              • 2020-07-17
              • 1970-01-01
              • 1970-01-01
              • 2019-01-06
              • 1970-01-01
              相关资源
              最近更新 更多