1

このレイアウトでは、右下に ImageButton 、中央下に TextView の 2 つのビューがあります。android:visibility両方のビューが - に設定されている場合visible、必要に応じてすべてが整列されます。しかし、android:visibilityImageButton をgone- EditText に設定すると、レイアウトの左端に移​​動します。

質問:

1) なぜそうなるのか?;

2)可視性をEditText設定する場所を変更しない方法は? 左の図 (以下を参照) と同じレイアウトを取得する必要がありますが、ImageButton は使用しません。(1つの可能性はではなく に設定することですが、 での解決策にもっと興味があります)ImageButtongonevisibilitygoneinvisiblevisibility = "gone"

Ps: 最初の 2 つのレイアウト (必須) は他RelativeLayoutFrameLayoutものに使用されます。質問に関係のないものはすべて削除しました。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/mForSearchFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/mForAdMediation"
        android:layout_alignWithParentIfMissing="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <EditText
                android:id="@+id/mSearchEditText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:ems="5"
                android:imeOptions="actionSearch"
                android:inputType="text"
                android:visibility="visible" >

                <requestFocus />
            </EditText>

            <ImageButton
                android:id="@+id/mSearchButton"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:background="@drawable/dark_button"
                android:src="@drawable/tab_search"
                android:visibility="visible" />
        </RelativeLayout>
    </FrameLayout>

</RelativeLayout>

レイアウトは次のとおりです。 レイアウト

4

2 に答える 2

7

問題は、内側の RelativeLayout が、幅が wrap_content に設定されている FrameLayout の内部にあることです。そのため、ImageView がなくなると、RelativeLayout の幅が EditText の幅に縮小されます。したがって、EditText は引き続き RelativeLayout 内の中央に配置されますが、RelativeLayout は EditText と同じ幅しかありません。

たぶん、このようなレイアウトを単純化できますか?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <EditText
        android:id="@+id/mSearchEditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:ems="5"
        android:imeOptions="actionSearch"
        android:inputType="text"
        android:visibility="visible" >

        <requestFocus />
    </EditText>

    <ImageButton
        android:id="@+id/mSearchButton"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:background="@drawable/dark_button"
        android:src="@drawable/tab_search"
        android:visibility="visible" />

</RelativeLayout>
于 2013-01-08T17:57:32.907 に答える
0

うーん、解決策を見つけたようです:

layout_width最初FrameLayoutに設定する必要があります"match_parent"

于 2013-01-08T17:56:26.777 に答える