如何在线性布局中居中文本视图
Posted
技术标签:
【中文标题】如何在线性布局中居中文本视图【英文标题】:how to center a textview in linearlayout 【发布时间】:2013-10-24 13:22:22 【问题描述】:我在 xml 中有以下视图。我在顶部有一个文本视图,它是一个横幅。然后我有一个包含消息的列表视图和另一个包含字符串“没有消息”的文本视图。
在运行时,我检查数据库中是否有任何消息。如果没有,那么我隐藏列表视图并显示 textviewnomessages。
我希望 textviewnomessages 在视图的中心,而不是在横幅下方。我如何指定 textviewnomessages 位于屏幕的中心。谢谢
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_
android:layout_
android:background="@drawable/carefreebgscaled"
android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/textviewmessageslabel"
android:layout_
android:layout_
android:gravity="center"
android:background="@color/blue_alpha_background"
android:text="Messages"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/listviewmessages"
android:layout_
android:layout_
android:background="#ccffffff"
android:cacheColorHint="#0000"
android:padding="5dp" >
</ListView>
<TextView
android:id="@+id/textviewnomessageslabel"
android:layout_
android:layout_
android:text="You have no messages."
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#0000FF" />
</LinearLayout>
.[编辑 1]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/carefreebgscaled" >
<TextView
android:id="@+id/textviewmessageslabel"
android:layout_
android:layout_
android:gravity="center"
android:background="@color/blue_alpha_background"
android:text="Messages"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/listviewmessages"
android:layout_
android:layout_
android:background="#ccffffff"
android:cacheColorHint="#0000"
android:padding="5dp" >
</ListView>
<TextView
android:id="@+id/textviewnomessageslabel"
android:layout_
android:layout_
android:text="You have no messages."
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#0000FF"
android:layout_centerInParent="true" />
</RelativeLayout>
【问题讨论】:
【参考方案1】:好的,根据您在编辑中所做的更改,如果您将相关文本视图设置为 layout_width 和 layout_height 的“wrap_content”,它应该可以按预期工作。
<TextView
android:id="@+id/textviewnomessageslabel"
android:layout_
android:layout_
android:text="You have no messages."
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#0000FF"
android:layout_centerInParent="true" />
您还应该将列表视图设置在顶部文本视图下方,如下所示:
<ListView
android:id="@+id/listviewmessages"
android:layout_
android:layout_
android:layout_below="@id/textviewmessageslabel"
android:background="#ccffffff"
android:cacheColorHint="#0000"
android:padding="5dp" >
</ListView>
【讨论】:
【参考方案2】:您可以在运行时使用setvisibility()
设置TextView
的可见性。
【讨论】:
【参考方案3】:使用
android:layout_
android:layout_
android:gravity="center"
【讨论】:
【参考方案4】:您可以通过将高度更改为“fill_parent”来做到这一点:
<TextView
android:id="@+id/textviewnomessageslabel"
android:layout_
android:layout_
android:text="You have no messages."
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#0000FF" />
或者通过将他的父级更改为 RelativeLayout 并使用:
android:layout_centerInParent="true
[编辑1]
使用相对布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<TextView
android:id="@+id/textviewmessageslabel"
android:layout_
android:layout_
android:gravity="center"
android:text="Messages"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/listviewmessages"
android:layout_
android:layout_
android:background="#ccffffff"
android:layout_below="@id/textviewmessageslabel"
android:cacheColorHint="#0000"
android:padding="5dp" >
</ListView>
<TextView
android:id="@+id/textviewnomessageslabel"
android:layout_
android:layout_
android:text="You have no messages."
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#0000FF"
android:gravity="center"
android:layout_centerInParent="true" />
</RelativeLayout>
【讨论】:
第二个文本视图现在位于横幅顶部。编辑 1 是我现在所拥有的。如何将第二个 textview 设置为屏幕中心【参考方案5】:将“android:gravity="center"”添加到您的 TextView
【讨论】:
【参考方案6】:尝试将您的 TextView 作为直接父级放入 RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_
android:layout_
android:background="@drawable/carefreebgscaled"
android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/textviewmessageslabel"
android:layout_
android:layout_
android:gravity="center"
android:background="@color/blue_alpha_background"
android:text="Messages"
android:textColor="#FFFFFF"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ListView
android:id="@+id/listviewmessages"
android:layout_
android:layout_
android:background="#ccffffff"
android:cacheColorHint="#0000"
android:padding="5dp" >
</ListView>
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:id="@+id/textviewnomessageslabel"
android:layout_
android:layout_
android:text="You have no messages."
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#0000FF"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="211dp"
android:gravity="center"/>
</RelativeLayout>
</LinearLayout>
【讨论】:
以上是关于如何在线性布局中居中文本视图的主要内容,如果未能解决你的问题,请参考以下文章