我面临一个设计问题。我正在尝试将编辑文本的大小固定为放置在其上方的微调器的大小。我将把我的 xml 放在这里,这肯定会清除我的设计。我的 xml 我有 2 个微调器和一个编辑文本。但是放置在 editext 前面的 textview 根据选定的微调器更改其文本,这会干扰 editext 的大小。这是我的 xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#0B3B0B">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp"
android:layout_marginTop="20dip">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/device"
android:textSize="18dp"
android:textColor="#FFFFFF"
android:paddingLeft="20dip"/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/spnDevice"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/action"
android:textSize="18dp"
android:textColor="#FFFFFF"
android:paddingLeft="20dip"/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/spnAction"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/SimNo"
android:textSize="18dp"
android:textColor="#FFFFFF"
android:paddingLeft="20dip"/>
<EditText
android:id="@+id/simNo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:singleLine="true"
android:inputType="text"
android:textSize="15dip"
android:layout_marginRight="14dp"
android:padding="5dip"
android:background="#FFFFFF">
<requestFocus />
</EditText>
</LinearLayout>
最佳答案
如果您需要 TextEdit
的宽度与上面的 Spinner
的宽度完全匹配,并且还要在运行时确定它们的大小,那么您可能会更好关闭使用一个 RelativeLayout
。这样您就可以避免嵌套布局(如 official API Guide 所建议的那样)以及如果您当前的布局变得比现在更庞大时可能会遇到的一些性能问题。
所以你可以做类似下面的事情;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0B3B0B">
...
<Spinner
android:id="@+id/spinnerToMatch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/spnAction"/>
...
<EditText
android:id="@+id/simNo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@+id/spinnerToMatch"
android:layout_alignLeft="@+id/spinnerToMatch"
android:layout_alignRight="@+id/spinnerToMatch"
android:singleLine="true"
android:inputType="text"
android:textSize="15sp"
android:padding="5dip"
android:background="#FFFFFF"/>
....
</RelativeLayout>
在上面的伪代码中,android:layout_alignLeft=""
和android:layout_alignRight=""
属性决定了的左右边缘>EditText
应该与 Spinner
的左右边缘对齐,因此它们的宽度相同(因此宽度为 0dp)。
或者,您可以使用权重并保留嵌套的 LinearLayouts
(如 Abdul Mohsin 的回答中所示),这样您可以更轻松地转换为这种方式,但对 future 的更改而言可扩展性较差。
希望对您有所帮助。
关于android - 将 edittext 的大小固定为与上面的微调器相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843176/