为什么在TextView中将wrap_content设置为width可以保留整个宽度?

时间:2019-07-01 16:16:20

标签: android android-layout

我在TextView中有一个简单的LinearLayout。 当我将TextView宽度设置为wrap_content时,它可以灵活地显示内容,但是当我将布局的方向设置为vertical时,文本将获得屏幕的整个宽度。

我已经设置了布局和文本视图的背景色,因此我可以看到文本的实际占用空间

我已经阅读了wrap_content和match_parent之间的区别,但就我而言,它实际上并未执行应做的事情。

Here's an image of how it looks

这是我的XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#fe4236"
    android:layout_width="match_parent"
    android:layout_height="match_parent"  
    android:orientation="vertical"
    >


<TextView
    android:text="Hi there!"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="36sp"
    android:textColor="@android:color/black"
    android:background="#ccddff"
   />

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

更新

很抱歉,如果我听起来像是我在敲打你的,或者听起来像是对我原来的Answer的人身攻击;我没有完整的图片,并假设您正在寻找问题的解决方案。

我真正想表达的是,您发布的XML代码段不会在我的环境中产生相同的输出(并且不应达到最佳效果)据我所知);当我查看它时,甚至在尝试运行它之前,它的外观都很好,所以让我皱眉,这也让我相信您正在做其他我不知道的东西,因此为什么我要求更多信息。

现在我们知道您正在使用在线可视化工具...让我告诉您,我以前从未见过它,但是从上下文来看,Android Studio可视化工具看起来像这样:

Android Studio designer

我对您的代码段所做的仅修改是添加 missing XML标头:

<?xml version="1.0" encoding="utf-8"?>

位于文件顶部(如果添加,Udacity可视化工具会显示错误)。

总而言之,我试图在原始答案中说的是,您无需做任何事情,因为您假设wrap_content中的TextView应该足以容纳文本包装其内容,正确

Udacity是错误的,并且无法正确呈现在水平轴上环绕子级的“垂直线性布局”。

祝您训练顺利!

对于什么是有价值的(并且仅确保您看到我来自哪里),如果您在第一次发布此问题时就发布了Udacity,那么我将能够为您省去麻烦并可能会令人沮丧必须阅读我的原始答案的经验。

下面的原始答案,不再相关。

我不确定您在哪里/如何看待此信息,但我认为您首先需要了解Layout引擎在Android上的工作方式。

发生了什么

我将您的代码粘贴到了Android Studio(3.4.1)中,结果如下:

Your Layout

vertical还是horizontal都没有关系,因为有足够的空间可以将它们放在两个方向上。

你能做什么?

如果您想使用ConstraintLayout(我会这样做),那么您将获得相同的结果:

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

        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"

        android:text="Hi there!"
        android:background="#ccddff"
        android:textColor="@android:color/black"
        android:textSize="36sp"
        />
</android.support.constraint.ConstraintLayout>

(不发布屏幕截图,但是相信我,它看起来一样)。