RelativeLayout:将TextView固定到屏幕中心的另一个TextView的底部

时间:2016-02-03 18:00:22

标签: android xml android-layout

我想显示以下内容。我希望textview显示MY NAME显示在屏幕中央,其他textview显示FAVOURITE THIS低于它。 2 textviewsrelativelayout包围。

我有以下两个textViews

                                   <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        tools:text="My Name"
                                        android:fitsSystemWindows="true"
                                        android:id="@+id/name"
                                        android:textSize="18sp"
                                        android:textAllCaps="true"
                                        android:textStyle="bold"
                                        android:layout_centerHorizontal="true"
                                        android:textColor="@color/white" />

                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text="@string/Favourite"
                                        android:fitsSystemWindows="true"
                                        android:textAllCaps="true"
                                        android:textColor="@color/white"
                                        android:textStyle="bold"
                                        android:layout_centerHorizontal="true"
                                        android:id="@+id/fav"
                                        android:layout_below="@+id/name"/>

此xml将显示以下内容:

Display1

现在,我想要&#39;我的名字&#39;要显示在正方形的中间,所以我只是将此属性添加到textView,其ID为name - android:layout_centerVertical="true",因此xml更改为:

                               <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    tools:text="My Name"
                                    android:fitsSystemWindows="true"
                                    android:id="@+id/name"
                                    android:textSize="18sp"
                                    android:textAllCaps="true"
                                    android:textStyle="bold"
                                    android:layout_centerVertical="true"
                                    android:layout_centerHorizontal="true"
                                    android:textColor="@color/white" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:text="@string/Favourite"
                                    android:fitsSystemWindows="true"
                                    android:textAllCaps="true"
                                    android:textColor="@color/white"
                                    android:textStyle="bold"
                                    android:layout_centerHorizontal="true"
                                    android:id="@+id/fav"
                                    android:layout_below="@+id/name"/>

结果如下所示。我的名字正确地显示在屏幕的中央,但是当我真的希望它显示在我的名字下面时,我最喜欢的还没有移动:

Display2

我之前遇到过这个问题,但不知道如何解决它。 xml代码似乎合乎逻辑......我做错了什么?

这是完整的xml代码:

          <android.support.design.widget.AppBarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/appbar"
                android:fitsSystemWindows="true"
                >

                <android.support.design.widget.CollapsingToolbarLayout
                    android:id="@+id/collapsing_toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:contentScrim="?attr/colorPrimary"
                    android:background="@color/white"
                    app:expandedTitleMarginStart="48dp"
                    app:expandedTitleMarginEnd="64dp"
                    android:fitsSystemWindows="true"
                    app:expandedTitleTextAppearance="@color/transparent"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed"
                    >

                        <RelativeLayout
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:fitsSystemWindows="true"
                            android:id="@+id/picture"
                            app:layout_collapseMode="parallax">

                                <com.example.simon.customshapes.ForegroundSquareImageView
                                    android:id="@+id/backdrop"
                                    android:contentDescription="@string/group_photo"
                                    android:transitionName="@string/transition"
                                    android:clickable="true"
                                    style="@style/SelectableItemBackground"
                                    android:layout_width="match_parent"
                                    android:background="@color/deep_orange_500"
                                    android:layout_height="240dp"
                                    android:scaleType="centerCrop"
                                    android:fitsSystemWindows="true"
                                    />

                                    <ProgressBar
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:id="@+id/progressBar_Pic"
                                        android:fitsSystemWindows="true"
                                        android:visibility="visible"
                                        android:layout_centerVertical="true"
                                        android:layout_centerHorizontal="true"/>

                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        tools:text="My Name"
                                        android:fitsSystemWindows="true"
                                        android:id="@+id/name"
                                        android:textSize="18sp"
                                        android:textAllCaps="true"
                                        android:textStyle="bold"
                                        android:layout_centerVertical="true"
                                        android:layout_centerHorizontal="true"
                                        android:textColor="@color/white" />

                                    <TextView
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:text="@string/Favourite"
                                        android:fitsSystemWindows="true"
                                        android:textAllCaps="true"
                                        android:textColor="@color/white"
                                        android:textStyle="bold"
                                        android:layout_centerHorizontal="true"
                                        android:id="@+id/fav"
                                        android:layout_below="@+id/name"/>

                                </RelativeLayout>

                    <android.support.v7.widget.Toolbar
                        android:id="@+id/toolbar"
                        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                        android:layout_width="match_parent"
                        android:layout_height="?attr/actionBarSize"
                        app:layout_collapseMode="pin"/>

                </android.support.design.widget.CollapsingToolbarLayout>

            </android.support.design.widget.AppBarLayout>

2 个答案:

答案 0 :(得分:1)

RelativeLayout在将视图设置为wrap_content时布局视图时出现问题。

你应该使用固定的高度或不同的布局(如果可能的话),它会很好地工作。

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/black"
    android:gravity="center">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textAllCaps="true"
        android:textColor="@android:color/white"
        android:textSize="18sp"
        android:textStyle="bold"
        tools:text="My Name" />

    <TextView
        android:id="@+id/fav"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:layout_centerHorizontal="true"
        android:text="Favourite"
        android:textAllCaps="true"
        android:textColor="@android:color/white"
        android:textStyle="bold" />

</RelativeLayout>