【问题标题】:How to set Textview , Edittext and button height's to be same on Linearlayout如何在 Linearlayout 上设置 Textview 、 Edittext 和按钮高度相同
【发布时间】:2016-07-27 01:07:24
【问题描述】:

如何将LinearLayout 项目高度设置为相同。我尝试使用RelativeLayout,但可以取得任何成功。知道我该怎么做吗? Tyvm 寻求帮助

<LinearLayout
    android:background="@color/red"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:weightSum="11">

    <TextView
        android:id="@+id/lblParca"

        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="5.5"
        android:text="Parça Kodu"
        android:textSize="15dp" />

    <EditText
        android:id="@+id/txthldMalzemeKodu"
        style="@style/DefaultEditTextSmall"
        android:layout_width="0dip"
        android:layout_weight="4.5"
        android:layout_height="wrap_content"
        android:inputType="textCapCharacters"
        android:singleLine="true" />

    <ImageButton
        android:id="@+id/btnhldgetMalzeme"
        style="@style/btnStyleBreakerBay"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@mipmap/ic_ara" />
</LinearLayout>

这就是我得到的:

【问题讨论】:

  • 设置高度值?
  • 你到底想做什么?告诉我你需要什么,我会为你提供好的XML file
  • 最直接的方法是为所有内容设置固定高度(即android:layout_height = "56dp"(可能还需要调整gravity 和layout_gravity)
  • 我不想设置硬编码高度,还有其他的想法吗?
  • 您可能需要为您的容器布局定制一个视图,让它测量它的孩子以查看哪个是“最高”的,然后拉伸其他视图以匹配该高度。

标签: android xml layout android-linearlayout


【解决方案1】:

您需要为所有视图设置相同的高度。 要么你这样做:

android:layout_height="match_parent"

或

 android:layout_height="some value"

【讨论】:

    【解决方案2】:

    您可以尝试对所有视图使用android:layout_weight="1",并设置android:layout_height="0"

    Link 在文档中。

    【讨论】:

      【解决方案3】:

      试试这个xml file

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginTop="5dp"
          android:background="@color/red"
          android:orientation="horizontal"
          android:weightSum="11">
      
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="horizontal">
      
              <LinearLayout
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_gravity="center_vertical"
                  android:layout_weight="0.40"
                  android:orientation="horizontal">
      
                  <TextView
                      android:id="@+id/lblParca"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:text="Parça Kodu"
                      />
              </LinearLayout>
      
              <LinearLayout
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="0.40"
                  android:orientation="horizontal">
      
                  <EditText
                      android:id="@+id/txthldMalzemeKodu"
                      style="@style/DefaultEditTextSmall"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:inputType="textCapCharacters"
                      android:singleLine="true"/>
              </LinearLayout>
      
              <LinearLayout
                  android:layout_width="0dp"
                  android:layout_height="match_parent"
                  android:layout_weight="0.20"
                  android:orientation="horizontal">
      
                  <ImageButton
                      android:id="@+id/btnhldgetMalzeme"
                      style="@style/btnStyleBreakerBay"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:src="@mipmap/ic_ara"/>
              </LinearLayout>
          </LinearLayout>
      </LinearLayout>
      

      【讨论】:

      • Tyvm Aspicas 就是这样
      • 我很高兴聆听。没问题,任何问题..我在这里。 @CanAltunoz
      【解决方案4】:

      一种方法是硬编码 Parent 的 LinearLayout Height 。

      另一种方法是为每个项目和每个LinearLayout
      集合中的每个项目采取3个线性布局

        android:layout_gravity="center_vertical"
      

      【讨论】:

        【解决方案5】:

        如果您对 Aspicas 的回答感到满意,布局可以简化为

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:background="@color/red"
            android:orientation="horizontal">
        
            <TextView
                android:id="@+id/lblParca"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:layout_weight="0.40"
                android:text="Parça Kodu" />
        
            <EditText
                android:id="@+id/txthldMalzemeKodu"
                style="@style/DefaultEditTextSmall"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.40"
                android:inputType="textCapCharacters"
                android:singleLine="true"/>
        
            <ImageButton
                android:id="@+id/btnhldgetMalzeme"
                style="@style/btnStyleBreakerBay"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.20"
                android:scaleType="centerInside"
                android:src="@mipmap/ic_ara"/>
        </LinearLayout>
        

        没有必要拥有所有的包装器。还要注意使用 gravity 而不是 layout_gravity 对您的 TextView 所做的更改以使您的内容居中。我真的很惊讶这个作品,根据我的理解,这应该是在拉伸视图的高度,显然我的想法是错误的。

        【讨论】:

        • 你说得对,没有必要拥有所有的包装器,但通常你需要在 Linear_Layouts 中修改你的设计,然后如果你没有在另一个 LinearLay 中,你将不得不修改所有元素,这样,如果您需要修改某些内容,您只需在您需要的LinearLayout 内进行更改,而无需修改其他元素,但是...是的,您的答案肯定也有效。
        • @Aspicas 你没有错,但你应该避免实现无关代码,直到你需要它。如果在任何时候某些内容需要包装器,这是一个很容易解决的问题,以避免在不需要包装器时使用它们。你没有错,我也不一定对,这只是你想如何管理你的代码。
        • 好的,感谢您的宝贵时间。 =)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多