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>

これにより、次の出力が生成されます

ここに画像の説明を入力

正直なところ、これは私が望んでいるものではありません。画像ビューが見つかるまで、テキストは画面の幅に合わせて「広がる」必要があります。文字間のスペースを改善することが解決策かもしれないと思います。

しかし、コードまたは XML で実行できる、より良い解決策があるかどうかを知りたいです。

4

2 に答える 2

0

私が正しければ、「Sales Inquiry」の下に 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>

ImageView を drawableRight に置き換えたことに注意してください。これは CompoundDrawable と呼ばれ、TextView のテキストに近い任意の場所に設定できます。ここで RelativeLayout を使用する必要はありません。Vertical LinearLayout でうまくいくはずです。

layout_width="match_parent" 

View をレイアウトの幅全体に広げる必要があることを示します。

ただし、「Sales Inquiry」と同じ行に 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="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 に答える
0

ちょっと私はあなたのコードにいくつかの変更を加えました。Relative Layout の代わりに 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 に答える