我正面临一个设计问题。我正在尝试修改大小以编辑文本作为放置在其上方的微调器的大小。我将把我的xml放在这里,这肯定会清除我的设计。我的xml我有2个微调器和一个editext。但是放在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>
答案 0 :(得分:2)
如果您需要TextEdit
的宽度与上面的Spinner
的宽度完全匹配,并且还要在运行时确定其大小,那么您最好使用一个{{1} }}。这样就可以避免嵌套布局(如official API Guide所建议的那样)以及当前布局变得比现在更加严重时可能遇到的一些性能问题。
所以你可以做以下事情;
RelativeLayout
在上面的伪代码中,<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=""
的左右边缘应与{{的左右边缘对齐1}},因此使它们的宽度相同(因此宽度为0dp)。
或者,您可以使用加权并保留嵌套的EditText
(如Abdul Mohsin的回答所示),这对您来说更容易转换,但对未来的更改不太可扩展。
我希望这会有所帮助。
答案 1 :(得分:1)
请尝试使用以下代码。这将有效
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="Device"
android:textColor="#FFFFFF"
android:textSize="18dp" />
<Spinner
android:id="@+id/spnDevice"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_weight="8" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="Action"
android:textColor="#FFFFFF"
android:textSize="18dp" />
<Spinner
android:id="@+id/spnAction"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_weight="8" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="10dp" >
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="Sim No"
android:textColor="#FFFFFF"
android:textSize="18dp" />
<EditText
android:id="@+id/simNo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="8"
android:background="#FFFFFF"
android:ems="10"
android:inputType="text"
android:padding="5dip"
android:singleLine="true"
android:textSize="15dip" >
<requestFocus />
</EditText>
</LinearLayout>
答案 2 :(得分:1)
因为我没有得到任何更好的解决方案。我只是给所有微调器和editext提供了“android:layout_weight =”1.0“。所以它看起来像是相同大小并且保持设备独立。