Android - 布局中其他视图中的中心视图

时间:2014-12-06 02:21:36

标签: java android xml layout

您好我在图像视图中将文本视图居中。我希望它看起来像这样,但它实际上垂直居中,如果字体大小改变,保持垂直居中。

enter image description here

这就是我在XML中所拥有的东西我不在乎我是否需要将相对布局改为另一种对我来说无关紧要的方式我只是希望能够将其置于中心位置。继承人xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.spencer.app.ProfileActivity"
android:id="@+id/layout">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="140dp"
    android:minWidth="140dp"
    android:id="@+id/logoBackground"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="25dp"
    android:layout_marginStart="25dp"
    android:layout_marginTop="25dp"
    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/u_textView"
    android:textSize="80sp"
    android:layout_marginLeft="31dp"
    android:layout_marginStart="31dp"
    android:layout_marginTop="20dp"
    android:layout_marginBottom="20dp"
    android:layout_alignTop="@+id/logoBackground"
    android:layout_alignLeft="@+id/logoBackground"
    android:layout_alignStart="@+id/logoBackground" />

</RelativeLayout>

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

试试这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.spencer.app.ProfileActivity" >

    <ImageView
        android:id="@+id/logoBackground"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="25dp"
        android:layout_marginStart="25dp"
        android:layout_marginTop="25dp"
        android:background="#ffffd0cd"
        android:contentDescription="@string/content_description_useless"
        android:minHeight="140dp"
        android:minWidth="140dp" />

    <TextView
        android:id="@+id/u_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/logoBackground"
        android:layout_alignLeft="@+id/logoBackground"
        android:layout_alignRight="@+id/logoBackground"
        android:layout_alignStart="@+id/logoBackground"
        android:layout_alignTop="@+id/logoBackground"
        android:text="@string/capital_u"
        android:textSize="80sp"
        android:gravity="center" />

</RelativeLayout>

答案 1 :(得分:0)

您的问题是,您不会将视图置于其他内容的中心,而您只是试图在顶部绘制。

一种可能的解决方案是将TextView的宽度和高度设置为与ImageView的尺寸相同。然后,将其添加到您的TextView XML:

android:gravity="center"

但总的来说,这不是做这种事情的正确方法。只需用以下内容更改TextView的背景,您就会好得多:

android:background="#ffffd0cd"

您还可以将背景更改为可绘制的:

android:background="@drawable/my_logo_background_image"

答案 2 :(得分:0)

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout"
tools:context="com.spencer.app.ProfileActivity">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minHeight="140dp"
    android:minWidth="140dp"
    android:id="@+id/logoBackground"
    android:layout_marginStart="25dp"
    android:background="#ffffd0cd"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="U"
    android:id="@+id/u_textView"
    android:layout_marginTop="30dp"
    android:layout_marginLeft="45dp"
    android:textSize="80sp"
    android:layout_alignTop="@+id/logoBackground"
    android:layout_alignLeft="@+id/logoBackground"
    android:layout_alignStart="@+id/logoBackground" />

我的工作并没有多大变化。用这个代替你的代码它会对你有用。 :)