【问题标题】:Aligning TextView center horizontaly and bottom to the parent将 TextView 中心水平和底部与父级对齐
【发布时间】:2013-01-08 17:49:47
【问题描述】:

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

问题:

1) 为什么会这样?;

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

P.s.:前两个布局 - 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>

以下是布局:

【问题讨论】:

    标签: android xml android-layout android-relativelayout


    【解决方案1】:

    问题在于您的内部 RelativeLayout 位于 FrameLayout 的内部,该 FrameLayout 的宽度设置为 wrap_content。因此,当 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>
    

    【讨论】:

    • 是的,问题出在那个 FrameLayout 上。谢谢!
    【解决方案2】:

    嗯,看来我找到了解决办法:

    我需要将第一个FrameLayoutlayout_width 设置为"match_parent"

    【讨论】:

      猜你喜欢
      • 2014-09-26
      • 1970-01-01
      • 2012-02-04
      • 2019-04-09
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多