【问题标题】:How to vertically align text within TextView如何在 TextView 中垂直对齐文本
【发布时间】:2014-11-03 01:11:31
【问题描述】:

我试图让一些文本在 TextView 中垂直对齐,但由于某种原因,它只是粘在此类 TextView 的顶部边缘。

相信我,我在 Stack Overflow 上阅读了几个关于相同或相似问题的问题,并尝试应用提供的解决方案,但似乎没有任何改变。

例如,我认为可以立即解决问题的方法是添加属性android:gravity="center_vertical|left",但这也无济于事。

这个用户的question 几乎完全描述了我的问题,除了他的 TextView 位于 RelativeLayout 内部,而后者又位于 ScrollView 内部,而我不需要(也不需要或不想)使用它。而且他提供的图片也完全适用于我正在尝试的describeachieve

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="2" >

    <ImageView
        android:id="@+id/account_server_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/account_server_icon"
        android:paddingLeft="16dp"
        android:gravity="left" />    

    <TextView
        android:orientation="vertical"
        android:id="@+id/tv_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:gravity="left|center_vertical" />

</LinearLayout>

【问题讨论】:

  • 你在你的 textview 上尝试过 layout_gravity 而不是重力吗?
  • 在您回答之前我没有尝试过。它确实解决了这个问题,@Tanis.7x 的答案也一样。谢谢!
  • 是否有参考来选择你们提供的答案之间“更正确”的答案?我可以接受任何一个,但我不想不公平,因为两者都解决了我的问题。
  • 对两者都投赞成票,然后简单地选择一个来结束您的问题...最好能直接解决您的问题。
  • 1) 两个答案都直接解决了我的问题。我独立申请了两个,他们都工作。 2)我不能投票给答案。我没有 15 个代表(顺便说一句,我如何获得代表?)

标签: android android-layout user-interface android-linearlayout textview


【解决方案1】:

问题是您的TextView 的高度设置为wrap_content。这意味着文本容器的大小将与文本的高度相同,因此视图中确实没有任何地方可以使内容居中(实际上它已经垂直居中了)。

如果您发布的LinearLayout包含ImageViewTextView,那么您可以简单地将高度更改为match_parent,它应该可以正常工作。

如果LinearLayout 包含其他Views,您可能需要考虑使用RelativeLayout 并将TextView 设置为与图像的顶部和底部对齐。

【讨论】:

  • 天哪!那成功了。我对在 Android 中进行开发还是很陌生,所以对我来说并不像对你那样清楚。谢谢@Tanis.7x
【解决方案2】:

按照你的成就建议,你只需要把你的gravity改成layout_gravity

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="2" >

    <ImageView
        android:id="@+id/account_server_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/account_server_icon"
        android:paddingLeft="16dp"
        android:gravity="left" />    

    <TextView
        android:orientation="vertical"
        android:id="@+id/tv_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:layout_gravity="left|center_vertical" />

</LinearLayout>

【讨论】:

    【解决方案3】:

    您需要设置重力,然后将文本对齐设置为重力

    <TextView
        android:orientation="vertical"
        android:id="@+id/tv_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:gravity="left|center_vertical"
        android:textAlignment="gravity"
     />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 2011-06-22
      • 2012-07-05
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多