[英]Android - Center Textview in ImageView of Relative Layout
我有一个带有ImageView的相对布局,并且想要在活动布局xml文件中将TextView放在ImageView的中心。
这是图像视图,然后是我为TextView尝试的图像
这是相对布局的内部:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="170dp"
android:minWidth="170dp"
android:id="@+id/logoBackground"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="33dp"
android:layout_marginStart="33dp"
android:layout_marginTop="33dp"
android:contentDescription="@string/content_description_useless"
android:background="#ffffd0cd" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/capital_u"
android:id="@+id/textView"
android:textSize="30sp"
android:layout_alignTop="@+id/logoBackground"
android:layout_alignLeft="@+id/logoBackground"
android:layout_alignStart="@+id/logoBackground"
android:layout_marginLeft="43dp"
android:layout_marginStart="43dp"
android:layout_marginTop="65dp"/>
我认为看起来不错,但marginTop为65难道不应该是imageView高度的一半吗?
我在这里先向您的帮助表示感谢。
它不起作用,因为您告诉TextView位于父级RelativeLayout的中心,但是ImageView附加在父级的左上角。
一种方法是使用RelativeLayout的alignXyz属性将TextView强制为ImageView的确切大小。 然后,将gravity属性设置为center,这将使文本出现在TextView边界的中心。 只要在所有维度上ImageView都大于TextView,这应该起作用。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/capital_u"
android:id="@+id/textView"
android:textSize="30sp"
android:layout_alignTop="@+id/logoBackground"
android:layout_alignLeft="@+id/logoBackground"
android:layout_alignRight="@+id/logoBackground"
android:layout_alignBottom="@+id/logoBackground"
android:gravity="center"/>
那对你有用吗?
我看到的一个问题是这一行:
android:layout_centerInParent="@+id/logoBackground"
layout_centerInParent的值应为true或false。 我猜测它的评估结果为假,位于左上角。 如果将其设置为true,它将自身居中在父级的中间(相对布局)。 要将其在ImageView中居中,您需要使相对布局的大小与ImageView相同。
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="170dp"
android:minWidth="170dp"
android:id="@+id/logoBackground"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="33dp"
android:layout_marginStart="33dp"
android:layout_marginTop="33dp"
android:contentDescription="@string/content_description_useless"
android:background="#ffffd0cd" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/capital_u"
android:id="@+id/textView"
android:textSize="30sp"
android:layout_centerInParent="true"/>
</RelativeLayout>
试试这个到您的textview: android:layout_centerInParent="true"
这样就可以:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="170dp"
android:minWidth="170dp"
android:id="@+id/logoBackground"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="33dp"
android:layout_marginStart="33dp"
android:layout_marginTop="33dp"
android:contentDescription="@string/content_description_useless"
android:background="#ffffd0cd" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/capital_u"
android:id="@+id/textView"
android:textSize="30sp"
android:layout_alignTop="@+id/logoBackground"
android:layout_alignLeft="@+id/logoBackground"
android:layout_alignStart="@+id/logoBackground"
android:layout_marginLeft="43dp"
android:layout_marginStart="43dp"
android:layout_marginTop="65dp"
android:layout_centerInParent="true"/>
试试这个代码:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<ImageView
android:scaleType="centerCrop"
android:layout_width="30dp"
android:layout_height="30dp"/>
<TextView
android:id="@+id/your_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14sp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="1" />
</RelativeLayout>
为此,您必须使用“ Frame Layout
。
供参考,请参见此处www.developer.android.com/reference/android/widget/FrameLayout.html
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:src="@drawable/ic_launcher"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
<TextView
android:text="Frame Text"
android:textSize="30px"
android:textStyle="bold"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"/>
</FrameLayout>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.