【问题标题】:set EditText width in LinearLayout depend on TextView width在 LinearLayout 中设置 EditText 宽度取决于 TextView 宽度
【发布时间】:2013-05-06 09:57:29
【问题描述】:

我有以下 sn-p 代码。只有一个EditText 和TextView 在水平LinearLayout。我想设置EditText 宽度取决于TextView 宽度。如果TextView的宽度表示文字增加需要调整EdiText宽度

<?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="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/titleLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#224386"
        android:orientation="horizontal"
        android:padding="5dp" >

        <EditText
            android:id="@+id/titleEditText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:background="@drawable/gradient_edittext"
            android:ellipsize="end"
            android:gravity="right|center_vertical"
            android:singleLine="true" />

        <TextView
            android:id="@+id/titleTextView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1"
            android:gravity="right"
            android:text="Name"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />
    </LinearLayout>

</LinearLayout>

提前谢谢你。

【问题讨论】:

  • 必须是LinearLayout 还是可以使用RelativeLayout?

标签: android view textview android-edittext android-linearlayout


【解决方案1】:

如果我是你,我会使用 RelativeLayout 而不是 LinearLayout。

<?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="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/titleLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#224386"
        android:padding="5dp" >

        <TextView
            android:id="@+id/titleTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:gravity="right"
            android:text="Name"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <EditText
            android:id="@+id/titleEditText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/titleTextView"
            android:background="@drawable/gradient_edittext"
            android:ellipsize="end"
            android:gravity="right|center_vertical"
            android:singleLine="true" />
    </RelativeLayout>

</LinearLayout>

它会产生你想要的输出。

还请注意,将gravity 设置为TextView 是无用的,因为它会包装其内容。这同样适用于EditText 的gravity 的center_vertical 值,因为它还按高度包装其内容。

【讨论】:

    【解决方案2】:

    只需使用RelativeLayout 而不是LinearLayout。然后将 textView 设置为 textView 的右侧,并将 editText 设置为 textView 的左侧。

    <?xml version="1.0" encoding="utf-8"?>
    

    <RelativeLayout
        android:id="@+id/titleLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#224386"
        android:padding="5dp" >
        <TextView
            android:id="@+id/titleTextView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Name"
            android:layout_alignParentRight="true"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />
        <EditText
            android:id="@+id/titleEditText"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@+id/titleTextView"
            android:background="@drawable/gradient_edittext"
            android:ellipsize="end"
            android:layout_marginRight="10dip"
            android:singleLine="true" />
    
    </RelativeLayout>
    

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 2016-09-04
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多