2013-05-06 111 views
3

我有以下代码片段。只有一个EditTextTextView横向LinearLayout。我想设置EditText宽度取决于宽度TextView。如果TextView的宽度是指文本增加需要调整EdiText宽度在LinearLayout中设置EditText宽度取决于TextView宽度

<?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> 

预先感谢您。 enter image description here

+0

是否必须是一个'LinearLayout'或者你可以用'RelativeLayout'? – zbr 2013-05-06 10:13:09

回答

3

如果我是你,我会使用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的的值,因为它也在高度方面包装其内容。

+0

非常感谢你为我工作... – 2013-05-06 10:23:29

0

只需使用RelativeLayout而不是LinearLayout。然后将textView设置为right,并将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>