0

请看下面的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".SalesInqury" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="@string/sales_inqury"
        android:textSize="40sp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView1"
        android:layout_marginLeft="21dp"
        android:layout_toRightOf="@+id/textView1"
        android:src="@drawable/add_2" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_alignParentRight="true"
        android:layout_marginTop="16dp"
        android:hint="Search"
        android:ems="8" >

        <requestFocus />
    </EditText>

</RelativeLayout>

这会生成以下输出

在此处输入图像描述

老实说,这不是我想要的。文本应该“展开”以匹配屏幕宽度,直到找到图像视图。我认为改善字母之间的空间可能是解决方案。

但我想知道是否有更好的解决方案,我们可以在 Code 或 XML 中完成。

4

2 回答 2

0

嘿,我对您的代码做了一些更改。我使用 LinerLayout 而不是相对布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="horizontal"
    android:weightSum="3.0f"
     >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1.0f"
        android:textSize="40sp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1.0f"
        android:layout_marginLeft="21dp"

        />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1.0f"
        android:hint="Search"
        android:ems="8" >

        <requestFocus />
    </EditText>

</LinearLayout>
于 2013-10-31T08:25:48.863 回答
0

如果我猜对了,您需要“销售查询”下方的 EditText。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".SalesInqury" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableRight="@drawable/add_2"
        android:text="@string/sales_inqury"
        android:textSize="40sp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginTop="16dp"
        android:hint="Search"
        android:ems="8" >

        <requestFocus />
    </EditText>

</LinearLayout>

注意我用 drawableRight 替换了 ImageView。它被称为compoundDrawable,它可以设置在TextView 文本附近的任何位置。这里不需要使用RelativeLayout。Vertical LinearLayout 应该可以解决问题。

layout_width="match_parent" 

告诉视图应该分布在布局的宽度上。

但是,如果您希望 EditText 与“Sales Inquiry”位于同一行,那么它就完成了。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="horizontal"
    tools:context=".SalesInqury" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:drawableRight="@drawable/add_2"
        android:text="@string/sales_inqury"
        android:textSize="40sp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center_vertical"
        android:layout_marginTop="16dp"
        android:hint="Search"
        android:ems="8" >

        <requestFocus />
    </EditText>

</LinearLayout>

使用水平LinearLayout,将第一个TextView的layout_width设置为wrap_content。EditText 应该使用 layout_weight="1" (仅适用于 LinearLayout),这意味着它将占用尽可能多的可用空间。在水平 LinearLayout 中使用 layout_weight 时,将 layout_width 设置为 0dp。如果是垂直LinearLayout,layout_height应该是0dp。

于 2013-10-31T08:24:28.883 回答