Android 为什么将文本视图中的内容按宽度换行会保留整个宽度?

Android 为什么将文本视图中的内容按宽度换行会保留整个宽度?,android,android-layout,Android,Android Layout,我在线性布局中有一个简单的文本视图。 当我将TextView width设置为wrap_content时,内容会变得灵活,但当我将布局方向设置为vertical时,文本会获得整个屏幕的宽度 我已经为布局和文本视图设置了背景色,因此我可以看到文本的实际占用空间 我已经读过wrap_content和match_parent之间的区别,但在我的例子中,它实际上并没有做它应该做的事情 以下是我的XML: <LinearLayout xmlns:android="http://schema

我在
线性布局中有一个简单的
文本视图
。 当我将TextView width设置为
wrap_content
时,内容会变得灵活,但当我将布局方向设置为
vertical
时,文本会获得整个屏幕的宽度

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

我已经读过wrap_content和match_parent之间的区别,但在我的例子中,它实际上并没有做它应该做的事情

以下是我的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>

更新 道歉,如果我听起来像是在惩罚你,或者听起来像是对我最初答案的人身攻击;我没有掌握全部情况,以为你在寻找解决问题的办法

我真正想说的是,您发布的XML片段在我的环境中不会产生相同的输出(据我所知,它不应该产生相同的输出);当我看它的时候,它看起来很好,甚至在尝试运行它之前,所以它让我对这种可能性感到皱眉,这也让我相信你正在做一些我不知道的事情,因此我要求提供更多信息

现在我们知道您正在使用在线可视化工具。。。让我告诉你,我以前从未见过它,但在上下文中,Android Studio可视化工具如下所示:

我对您的代码段所做的唯一修改是添加缺少的XML头:

在文件的顶部(如果添加Udacity visualizer,则会显示错误)

总之,我在最初的回答中想说的是,这里你不需要做什么,因为你假设
TextView
中的
wrap\u内容应该足以让文本包装它的内容,是正确的

Udacity错误,无法正确渲染在水平轴上包含环绕子对象的垂直线性布局

祝你训练顺利

如果你在第一次发布这个问题时就发布了Udacity的东西,那么我就可以为你省去阅读我原始答案的麻烦和潜在的沮丧体验。

下面是原始答案,不再相关。 我不确定您在哪里/如何看到这一点,但我认为您需要首先了解Android上的布局引擎是如何工作的

发生什么事? 我在我的Android Studio(3.4.1)中粘贴了你的代码,下面是我看到的:

无论是垂直的还是水平的,都没有关系,因为在两个方向上都有足够的空间

你能做什么? 如果您想使用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>

(没有发布截图,但相信我,它看起来是一样的)。

更新 道歉,如果我听起来像是在惩罚你,或者听起来像是对我最初答案的人身攻击;我没有掌握全部情况,以为你在寻找解决问题的办法

我真正想说的是,您发布的XML片段在我的环境中不会产生相同的输出(据我所知,它不应该产生相同的输出);当我看它的时候,它看起来很好,甚至在尝试运行它之前,所以它让我对这种可能性感到皱眉,这也让我相信你正在做一些我不知道的事情,因此我要求提供更多信息

现在我们知道您正在使用在线可视化工具。。。让我告诉你,我以前从未见过它,但在上下文中,Android Studio可视化工具如下所示:

我对您的代码段所做的唯一修改是添加缺少的XML头:

在文件的顶部(如果添加Udacity visualizer,则会显示错误)

总之,我在最初的回答中想说的是,这里你不需要做什么,因为你假设
TextView
中的
wrap\u内容应该足以让文本包装它的内容,是正确的

Udacity错误,无法正确渲染在水平轴上包含环绕子对象的垂直线性布局

祝你训练顺利

如果你在第一次发布这个问题时就发布了Udacity的东西,那么我就可以为你省去阅读我原始答案的麻烦和潜在的沮丧体验。

下面是原始答案,不再相关。 我不确定您在哪里/如何看到这一点,但我认为您需要首先了解Android上的布局引擎是如何工作的

发生什么事? 我在我的Android Studio(3.4.1)中粘贴了你的代码,下面是我看到的:

无论是垂直的还是水平的,都没有关系,因为在两个方向上都有足够的空间

你能做什么? 如果您想使用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>


(没有发布截图,但相信我,它看起来是一样的)。

你好,罗斯,欢迎来到SO!你能发布一个截图,说明它在两种情况下的外观以及你希望它的外观吗?嘿,马丁。我刚刚添加了。当我将布局的方向设置为垂直时,文本将获得屏幕的全宽->这没有意义;您需要发布整个布局和/或您的结果,因为根据提供的信息,没有足够的信息来确定发生了什么。你好,Rose,欢迎使用SO!你能发布一个截图,说明它在两种情况下的外观以及你希望它的外观吗?嘿,马丁。我刚加了一句。当我设置东方时