修改edittext的大小与上面的微调器一样

时间:2014-05-24 09:00:29

标签: android xml

我正面临一个设计问题。我正在尝试修改大小以编辑文本作为放置在其上方的微调器的大小。我将把我的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>

3 个答案:

答案 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“。所以它看起来像是相同大小并且保持设备独立。