【问题标题】:Vertically Center a TextView to the right of a FrameLayout将 TextView 垂直居中到 FrameLayout 的右侧
【发布时间】:2016-11-17 09:51:42
【问题描述】:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:id="@+id/container"
    android:background="?android:attr/selectableItemBackground"
    android:layout_height="wrap_content">
    <FrameLayout
        android:layout_width="wrap_content"
        android:id="@+id/frame"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="18dp"
        android:layout_marginBottom="10dp"
        android:layout_height="wrap_content">
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:minHeight="5dip"
            android:minWidth="5dip"
            android:maxWidth="20dip"
            android:maxHeight="20dip"
            android:id="@+id/progress_bar"
            android:visibility="visible"/>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/cover"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                />
            <TextView
                android:id="@+id/changeinscore"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0.00"
                android:shadowColor="#000000"
                android:shadowDx="1"
                android:shadowDy="1"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:shadowRadius="7"
                android:textSize="12sp"
                android:textColor="@color/background"
                android:fontFamily="sans-serif-condensed"/>
        </RelativeLayout>

    </FrameLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/middle"
        android:layout_toRightOf="@+id/frame"
        android:layout_centerVertical="true"
        android:text="TextView"

        />

</RelativeLayout>

我想将中间的 TextView 垂直居中到 FrameLayout 的右侧,因为 changeinscore TextView 位于 FrameLayout 内部,如果这有意义的话。目前它偏离中心,因为如果我理解正确,centerVertical 将它集中在整个RelativeLayout 中,而不是专门针对FrameLayout。基本上我希望中间的文本视图是空的,但实际上锚定其他文本视图,所以我可以有 2 个文本视图稍微偏离框架布局/图像视图。

如果我按照 San 所说的进行操作,这就是结果,但不是我想要的

【问题讨论】:

    标签: android xml


    【解决方案1】:

    我终于得到了你想要的东西,这是我的样本。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:id="@+id/container"
        android:background="?android:attr/selectableItemBackground"
        android:layout_height="wrap_content">
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/frame"
            android:layout_margin="10dp"
            android:gravity="center">
    
    
            <ImageView
                android:id="@+id/cover"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/im"
                />
    
            <TextView
                android:id="@+id/changeinscore"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0.00"
                android:shadowColor="#000000"
                android:shadowDx="1"
                android:shadowDy="1"
                android:visibility="gone"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:shadowRadius="7"
                android:textSize="12sp"
                android:layout_margin="5dp"
                android:textColor="@color/background"
                android:fontFamily="sans-serif-condensed"/>
    
            <ProgressBar
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:minHeight="5dip"
                android:minWidth="5dip"
                android:maxWidth="20dip"
                android:maxHeight="20dip"
                android:layout_centerInParent="true"
                android:id="@+id/progress_bar"
                android:visibility="visible"/>
    
        </RelativeLayout>
    
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_alignTop="@+id/frame"
            android:layout_alignBottom="@+id/frame"
            android:layout_toRightOf="@id/frame"
            android:gravity="center"
            android:weightSum="3"
            android:orientation="vertical">
    
    
            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Aldnoah.Zero"
                android:layout_weight="1"
                android:ellipsize="end"
                android:maxLines="1"
                android:paddingLeft="5dp"
                android:gravity="bottom"
                android:fontFamily="sans-serif-slab"
                android:textSize="16sp"
                />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:id="@+id/middle"
                android:text="TextView"
                android:layout_weight="1"
                android:paddingLeft="5dp"
                android:textSize="14sp"
                />
    
            <TextView
                android:id="@+id/score"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Bottom Text"
                android:paddingLeft="5dp"
                android:textSize="14sp"
                android:gravity="top"
                android:fontFamily="sans-serif-condensed"/>
    
        </LinearLayout>
    
    
    
    </RelativeLayout>
    

    布局看起来像this

    【讨论】:

    • 问题是这行不通,因为我本质上是要使用 TextView 将其他 TextView 锚定在 FrameLayout 的中心附近。无论如何它都没有居中。
    • 也许您应该将match_parent 属性添加到您的根RelativeLayoutFrameLayout,以便根内的每个视图都被完全占用,并为其分配centerVertical 属性可能更有意义。前提是这些属性不会妨碍您的设计。
    • 我认为它会弄乱设计,因为这是 recyclerview 项目布局。
    • 您必须试一试,看看它是否会弄乱布局,否则我认为您应该使用不同的布局样式来创建您的设计。
    • 查看添加的图像,看看我这样做时会发生什么。 (它不起作用)。
    猜你喜欢
    • 2017-07-28
    • 2011-12-18
    • 2011-05-12
    • 1970-01-01
    • 2014-02-23
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多