【问题标题】:Android: multiline textviews haven't same heightAndroid:多行文本视图的高度不同
【发布时间】:2018-02-06 15:13:09
【问题描述】:

我有 3 个带有 2 行的文本视图。我将它们放在水平的LinearLayout 中,重量相同。问题是当我将文本放入此TextViews 时,如果文本占用 1 行或 2 行,它们的高度会有所不同。这种行为很奇怪。

无论文本长度如何,我都需要 3 个高度相同的文本视图。

my_layout.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="horizontal"
   android:gravity="bottom">
   <TextView
       style="@style/style"
       android:text="TextView1" />
   <TextView
       style="@style/style"
       android:text="Long text Textview2" />
   <TextView
       style="@style/style"
       android:text="TextView3" />
</LinearLayout>

styles.xml:

<style name="style">
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:background">@color/white</item>
    <item name="android:lines">2</item>
    <item name="android:textSize">@dimen/txt_size_30</item>
</style>

【问题讨论】:

  • 您将 layout_height 设置为 wrap_content。
  • 有谁知道,为什么会这样?有 wrap_content 也有设置确切的行数,为什么 TextViews 有不同的高度?
  • 这是个好问题,但我找不到合乎逻辑的答案。 lines=2 应该假设从一开始就处理高度,无论文本是在一行还是两行。

标签: android textview multiline equal-heights


【解决方案1】:

您需要为 layout_height 设置一些高度,而不是使用 wrap_content。

WRAP_CONTENT : 视图请求的高度或宽度的特殊值。

WRAP_CONTENT 会根据视图要求改变高度。

更新

您可以使用约束布局。这里所有的 TextView 高度都与 long textView(TextView 2) 的高度匹配

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#dedede"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/textView2"
        app:layout_constraintBottom_toBottomOf="parent"
        android:text="textview 1"
        app:layout_constraintTop_toTopOf="@id/textView2"

        />
    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:background="#dedede"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toEndOf="@id/textView1"
        app:layout_constraintEnd_toStartOf="@id/textView3"
        app:layout_constraintBottom_toBottomOf="parent"
        android:text="long textView 2"
        />
    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:background="#dedede"
        android:layout_height="0dp"
        app:layout_constraintStart_toEndOf="@id/textView2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:text="textView 3"
        app:layout_constraintTop_toTopOf="@id/textView2"
        />

</android.support.constraint.ConstraintLayout>

【讨论】:

  • 我不想使用硬编码的高度。硬编码高度解决了这个问题,但它没有响应。用户可以在设备设置中更改字体大小。
猜你喜欢
  • 1970-01-01
  • 2017-02-22
  • 2016-02-08
  • 1970-01-01
  • 2012-10-07
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多