android - 将 edittext 的大小固定为与上面的微调器相同

标签 android xml

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

相关文章:

c# - 在 C# 中使用 RegEx 在其他项出现后查找尖括号内的第一项

android - 文本字段仍然隐藏在键盘后面 - Titanium Android

android - 使用 onCreateDialog 创建时,DialogFragment 不可见

java - 在可执行 jar 中加载 xml 文件给出错误文件无法找到,从 eclipse 运行没问题

java - 如何在屏幕底部显示对话框

c# - 将对象序列化为 XML 时出现意外结果

java - 在 Android 上回收膨胀 View

java - AdMob 奖励视频广告的静态奖励金额

javascript - Android - 向服务器询问新版本的应用程序?

php - 需要帮助查找 Doctrine 2 xml 映射文件中的错误