1

在这个布局中,我有两个视图 - 右下角的 ImageButton 和底部中心的 TextView。当android:visibility两个视图都设置为visible- 时,所有视图都根据需要对齐。但是,如果我将android:visibilityImageButton 设置为gone- EditText 会转到布局的左边缘。

问题:

1)为什么会这样?;

2)如何实现不改变EditText设置ImageButton可见性的位置gone?我需要获得与左图相同的布局(见下文),但没有 ImageButton。(我知道,一种可能性是不设置visibilitygone,而是设置为invisible,但我对使用 的解决方案更感兴趣visibility = "gone"

Ps:前两个布局 -RelativeLayout并且FrameLayout是强制性的 - 它们用于其他内容,我只是删除了所有与问题无关的内容。

<?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_widthFrameLayout设置"match_parent"

于 2013-01-08T17:56:26.777 回答