我有以下代码段。水平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>
先谢谢你。
答案 0 :(得分: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
是无用的,因为它包含了其内容。这同样适用于center_vertical
的{{1}}的{{1}}值,因为它还会在高度上包装其内容。
答案 1 :(得分: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>