Почему wrap_content to width в TextView содержит полную ширину? - PullRequest
1 голос
/ 01 июля 2019

У меня есть простой 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 голосов
/ 01 июля 2019

Обновление

Извинения, если я звучу так, как будто наказываю ваше или если это звучит как личная атака на мой первоначальный ответ;У меня не было полной картины, и я предположил, что вы ищете решение проблемы.

Что я действительно хотел сформулировать, так это то, что фрагмент XML, который вы опубликовали , не производит такой же вывод в моей среде (и он не должен длянасколько я знаю);когда я смотрел на него, он выглядел отлично даже до того, как попытался запустить его, поэтому я нахмурился на возможность, которая также позволяла мне поверить , что вы делаете что-то ещечто я не знал о , поэтому я и попросил дополнительную информацию.

Теперь, когда мы знаем, что вы используете онлайн-визуализатор ... позвольте мне сказать, что я никогда не видел егораньше, но для контекста визуализатор Android Studio выглядит следующим образом:

Android Studio designer

Единственное изменение , которое я сделал в вашем фрагменте:добавить отсутствующий 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>

(не публикуя скриншот,но поверьте мне, это выглядит так же).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...