【问题标题】:TextView Width is not adjusting as the content inside it even after wrap content即使在包装内容之后,TextView 宽度也不会作为其中的内容进行调整
【发布时间】:2015-08-23 09:49:26
【问题描述】:

我在 TextView 中有一个文本,我想在较大屏幕尺寸的设备上显示为单行,在较小屏幕尺寸的设备上显示为两行。我在它的右边也有一个图像。

现在的问题是 TextView 的大小比它里面的内容要大,即使它是一个包装内容,这会在 textview 和 image view 之间创建额外的不必要的空间。

我的代码:

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

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:paddingLeft="40dp"
        android:paddingRight="40dp"
        >


        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Please Fit my width according tothecontentinsideme"
            android:textColor="#000000"
            android:background="#11DDFF"
            android:textSize="22sp"
            android:fontFamily="din-condensed"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/rightArrowImage"
            android:textStyle="bold"/>

        <ImageView
            android:id="@+id/rightArrowImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:src="@drawable/scoretracker_reedem_rewards_arrow"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            />


    </RelativeLayout>

</RelativeLayout>

输出:

更新

我尝试了dieter_h的建议

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

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:paddingLeft="40dp"
        android:paddingRight="40dp"
        android:orientation="horizontal"
        >


        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Please Fit my width according tothecontentinsideme"
            android:textColor="#000000"
            android:background="#11DDFF"
            android:textSize="22sp"
            android:textStyle="bold"/>

        <ImageView
            android:id="@+id/rightArrowImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:src="@drawable/scoretracker_reedem_rewards_arrow"
            />


    </LinearLayout>

</RelativeLayout>

立即输出:

【问题讨论】:

  • 在 TextView 中而不是在 ImageView 中放置边距
  • 在哪个布局中,线性布局还是相对布局?顺便说一句,我尝试了两种相同的结果,没有区别。
  • 等一下,我会在几分钟内给出我的答案..
  • 让我知道这就是你要的:)
  • 好吧,如果我是对的,在不覆盖任何 View 方法的情况下,您可以减少边距和文本大小,或者为不同的屏幕尺寸创建不同的布局,让单行文本用于更大的尺寸和较小的 2 行。

标签: android android-layout textview


【解决方案1】:

试试这个xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:background="#FFFFFF"
        android:gravity="center"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:orientation="horizontal"
        >
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <TextView
            android:layout_width="301dp"
            android:layout_height="wrap_content"
            android:text="Please Fit my width according tothecontentinsideme"
            android:textColor="#000000"
            android:id="@+id/TextView2"
            android:background="#11DDFF"
            android:textSize="22sp"
            android:textStyle="bold"/></LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/rightArrowImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"

        />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

这就是它的样子:

最终编辑

我创建了一个新的xml 试试这个

    <?xml version='1.0' encoding='utf-8'?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:layout_gravity="center_horizontal"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#fff"
        android:gravity="center"
        android:orientation="horizontal"
        tools:ignore="DisableBaselineAlignment" >



        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"

            android:layout_weight="0.5"
            android:orientation="horizontal"
            >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#000"
                android:textStyle="bold"
                android:textSize="15sp"
                android:background="#11DDFF"
                android:text="Please Fit my width according tothecontentinsideme"
                tools:ignore="HardcodedText"
                android:id="@+id/textViewTitleDialog"
                />

        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"

            android:gravity="center"
            android:orientation="horizontal" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:contentDescription="@string/app_name"

                android:src="@mipmap/ic_launcher"
                android:id="@+id/asd" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

这是输出

希望这是你想要的:)

【讨论】:

  • 谢谢,我已经照原样复制粘贴了你的代码,但是这里的结果和我之前的一样。我想知道为什么?把你的整个 xml 放一次。
  • 嘿,你已经固定了宽度,我知道这个技巧,但问题是它不会出现在更大的屏幕尺寸上,这是我所需要的。
  • 试试我的旧的,如果你放 10sp 就可以了
  • 不,我不想这样。我不想要左图中的额外空间。宽度应该直到文本结束。我认为使用 xml 我们无法解决这个问题。需要覆盖 TextView onMeasure(),但我不知道如何才能实现所需的结果。
  • 好吧..我尽力了,我没有想法......如果你想覆盖 onMeasure() 只需看看这个答案thisthis
猜你喜欢
  • 2016-11-06
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 2019-09-22
  • 2013-06-23
  • 1970-01-01
相关资源
最近更新 更多