如何在 Android 上将 TextView 居中?

Posted

技术标签:

【中文标题】如何在 Android 上将 TextView 居中?【英文标题】:How can I center a TextView on Android? 【发布时间】:2015-11-12 02:20:07 【问题描述】:

我有一个简单的布局,只有一个EditText 和一个TextView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_
        android:orientation="vertical">

        <LinearLayout
             android:layout_
             android:layout_
             android:orientation="vertical">

             <TextView
                android:id="@+id/lblName"
                android:layout_
                android:layout_
                android:layout_marginLeft="10dp"
                android:layout_marginTop="10dp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textSize="25sp"
                android:textStyle="bold" />

             <EditText
                android:layout_
                android:layout_
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textStyle="bold"
                android:textSize="15sp"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="10dp"
                android:id="@+id/txtName"/>
        </LinearLayout>

</LinearLayout>

我想将TextView 放在手机屏幕的中心。

我看到我可以将我的 LinearLayout 替换为 RelativeLayout 作为全局布局并将属性 android:gravity="center" 设置为居中,但我想要居中 TextView 和不是EditText,它也以这个函数为中心。

是否可以仅将TextView 居中而不将EditText 居中?

注意:当然,我不想用边距手动居中。

编辑:我希望 TextView 位于屏幕中心,而 EditText 位于 nextLine(屏幕左侧)。像这样的:

[                WIDHT OF THE SCREEN                ]
                 [TEXTVIEW-CENTER]
[EDITTEXT-LEFT]

提前致谢!

【问题讨论】:

你有一张图片来准确地描述你想要的吗?您希望编辑文本在哪里?在文本视图的上方或下方或侧面? 有人能解释一下为什么投反对票吗? @Fareya 哦,对不起,现在我编辑了我的问题,但我不知道如何添加图像。谢谢指正! 【参考方案1】:

尝试将您的内部 LinearLayout 更改为类似的内容。`

    <LinearLayout
         android:layout_
         android:layout_
         android:orientation="vertical">

` 它将获取所有屏幕空间,然后显示 EditText。

如果您在内部 Linear_layout 中使用 wrap_content,则内部 Linear_layour 的宽度将根据其 textView 进行包装,即它将作为 textview 的父级,但作为其外部布局的子级。参考图片。

但是如果您将其属性更改为 fill_parent ,它将根据其父级填充宽度。 我希望你现在能理解它。

【讨论】:

非常感谢!这正是我所需要的!但是......你能解释一下放在这里wrap_contentfill_parent之间的区别吗?为什么wrap_content 会显示在屏幕左侧?再次感谢! 我很高兴听到它对您有所帮助。如果我正确回答了您的问题,请接受此作为答案。 fill=parent 表示填充父级,即具有 fill=parent 属性的布局将尝试填充其父级,但在 warp_content 的情况下,它将尝试扭曲其内容,即在您的情况下,您的 textview 大小为小它正试图扭曲它的布局。 您能否在您的回答中加入一些详细的解释而不是评论?我真的不明白您在该评论中的意思,我不会有任何问题将其标记为已接受的答案。 好答案。但只是一个观察。使用match_parent 而不是fill_parent,因为最后一个已弃用。【参考方案2】:

改变

android:orientation="horizo​​ntal"

android:orientation="垂直"

添加

android:layout_gravity="center"

文本视图

【讨论】:

TextView 它仍然在屏幕的左侧。 您是否将方向更改为垂直? 是的,我改变了它,它也不起作用。我现在注意到我没有提出我的问题,即我有一个 LinearLayout 包装 EditTextTextView (我虽然我之前提出过)所以我要编辑我的问题。 您的父级LinearLayout 的宽度为wrap_content,因此它将以适合子级所需的最小宽度居中。【参考方案3】:

使用这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_
    android:layout_
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:layout_gravity="center"
        android:text="@string/hello_world" />

    <EditText
        android:id="@+id/editText1"
        android:layout_
        android:layout_
        android:ems="10" />

</LinearLayout>

【讨论】:

我现在编辑了我的问题,因为我忘了提出我的问题,它被包裹在另一个 LinearLayout 中,但据此我认为它应该可以工作,但它只在屏幕左侧时间。【参考方案4】:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:gravity="center">

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical"
        android:gravity="center_vertical">

        <TextView
            android:id="@+id/lblName"
            android:layout_
            android:layout_
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="25sp"
            android:textStyle="bold"
            android:text="Test"
            android:layout_gravity="center"/>

        <EditText
            android:layout_
            android:layout_
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="bold"
            android:textSize="15sp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="10dp"
            android:id="@+id/txtName"/>
    </LinearLayout>

</LinearLayout>

【讨论】:

【参考方案5】:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_>
        <TextView
            android:id="@+id/lblName"
            android:layout_
            android:layout_
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="25sp"
            android:textStyle="bold"
            android:layout_gravity="center"
            android:text="Sample Text"/>

        <EditText
            android:layout_
            android:layout_
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textStyle="bold"
            android:textSize="15sp"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="10dp"
            android:id="@+id/txtName"/>
</LinearLayout>

【讨论】:

以上是关于如何在 Android 上将 TextView 居中?的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITextView文本怎样居上显示而不是默认的居中?

如何在android上将kotlin转换为java? [复制]

如何在 Android 上将 Javascript 注入 GeckoView

如何在 Android 上将数据保存到文本文件?

如何在 Android 设备上将 WAV 编码为 mp3

如何在 Android 设备上将 WAV 编码为 mp3