在FrameLayout下面显示TextView

时间:2016-10-26 00:39:45

标签: android xml

所以我有一个带有图像视图和进度条的FrameLayout。在框架布局下面,我有一个textview。如何正确地将此文本视图置于图像/ framelayout下方。这是它的样子:https://imgur.com/a/NBHjA,这就是我想要的:https://imgur.com/a/d8Vkd

这样,文本居中,但现在加载图像时,进度条不会显示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="?attr/background"
    tools:context="com.nmoorthy.malscoretracker.ViewAnimeScores">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:textColor="@color/text_color_inverse"
            android:maxLines="1"
            android:ellipsize="end"
            android:id="@+id/toolbar_title" />

    </android.support.v7.widget.Toolbar>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="24dp"
        android:id="@+id/innerrelativelayout"
        >
        <!--<FrameLayout-->
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/progress_bar"
            android:layout_centerInParent="true"
            android:visibility="visible"/>
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"

                android:id="@+id/image"
                />

        <!--</FrameLayout>-->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/image"
            android:text="Status"
            android:id="@+id/status"
            android:textSize="10sp"
            android:textStyle="italic"
            android:layout_centerHorizontal="true"/>

    </RelativeLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Synopsis"
        android:id="@+id/synopsis"
        android:layout_toRightOf="@+id/innerrelativelayout"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/toolbar"
        android:layout_marginTop="18.9dp"
        android:layout_toEndOf="@+id/innerrelativelayout"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="12dp"
        android:maxLines="6"
        android:ellipsize="end" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="10.0"
        android:id="@+id/highScore"
        android:paddingLeft="16dp"
        android:paddingTop="13dp"
        android:textSize="12sp"
        android:fontFamily="sans-serif-condensed"
        android:layout_below="@+id/innerrelativelayout"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0.0"
        android:id="@+id/lowScore"
        android:paddingLeft="16dp"
        android:paddingTop="77dp"
        android:textSize="12sp"
        android:fontFamily="sans-serif-condensed"
        android:layout_below="@+id/innerrelativelayout"/>

    <TextView
        android:id="@+id/noGraph"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:paddingTop="40dp"
        android:visibility="gone"
        android:fontFamily="sans-serif-condensed"
        android:textStyle="bold"
        android:layout_below="@id/innerrelativelayout"
        android:text="You need at least 2 scores for a graph"
        android:layout_centerHorizontal="true"/>
    <com.db.chart.view.LineChartView
        android:id="@+id/linechart"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:paddingRight="16dp"
        android:paddingLeft="5dp"
        android:paddingTop="15dp"
        android:paddingBottom="15dp"
        android:layout_toRightOf="@+id/highScore"
        android:layout_below="@+id/innerrelativelayout"/>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4/8/16"
        android:paddingLeft="5dp"
        android:textSize="12sp"
        android:paddingTop="5dp"
        android:layout_toRightOf="@+id/lowScore"
        android:layout_below="@id/linechart"
        android:id="@+id/firstdate"
        />
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/firstdate"
        android:layout_below="@id/linechart">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="4/13/16"
            android:paddingRight="16dp"
            android:textSize="12sp"
            android:layout_alignParentRight="true"
            android:paddingTop="5dp"
            android:id="@+id/lastdate"
            />
    </RelativeLayout>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:paddingTop="3dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/firstdate"
        />

</RelativeLayout>

我想在图像视图中将状态置于框架中。我尝试过水平中心和alignparentbottom,但他们都没有工作。

3 个答案:

答案 0 :(得分:0)

  

FrameLayout旨在阻挡屏幕上的某个区域以显示单个项目。   https://developer.android.com/reference/android/widget/FrameLayout.html

并且你在FrameLayout中放置了两个布局。我们将RelativeLayout和alignparentbottom设置为true。

答案 1 :(得分:0)

TextView 上使用android:layout_centerHorizontal="true"android:layout_alignParentBottom="true"

我认为您将重力应用为center_horizo​​ntal,它只会将TextView中的内容集中在TextView中 - 如果您在TextView上使用match_parent,这是一种替代解决方案。

编辑:根据您对其他答案的评论,您似乎正在动态下载图像。因此,在绘制视图时,父宽度是 ProgressBar 的宽度,TextView相应地居中。加载图像时,需要在父RelativeLayout上调用requestLayout()来测量并重新布置具有新宽度的TextView。

答案 2 :(得分:0)

尝试:

<ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progress_bar"
        android:layout_centerInParent="true"
        android:visibility="visible"/>
        <ImageView
            android:layout_width="match_parent"   // Changes here
            android:layout_height="wrap_content"

            android:id="@+id/image"
            />

    <!--</FrameLayout>-->
    <TextView
        android:layout_width="match_parent"   // Changes here 
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_below="@+id/image"    
        android:layout_height="wrap_content"
        android:layout_below="@+id/image"
        android:text="Status"
        android:id="@+id/status"
        android:textSize="10sp"
        android:textStyle="italic"
        android:layout_centerHorizontal="true"/>

在Textview中,layout_below,给出框架布局的id,如果你想让你的视图在它下面