Выровняйте 3 растянутых Textview подряд в Relative Layout программно

Пожалуйста, не помечайте этот вопрос как повторяющийся. Почему? потому что я собираюсь объяснить, почему это не так.

Ниже приведены шаги, которые я сделал:

  1. Создать RelativeLayout
  2. Создал LayoutPArams для него как wrap_content и wrap_content
  3. Создал 1-й TextView, дал ему идентификатор
  4. Создал LayoutParams для первого текстового просмотра и добавил его в RelativeLAyout
  5. Создан второй TextView
  6. Создал для него LayoutParams, добавил правило быть right_Of из id_for_first_tetview
  7. Тот же шаг для третьего текстового просмотра, за исключением того, что он справа от второго текстового просмотра.

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

Хотите:

Это то, что я хочу

Происходит:

введите описание изображения здесь

Короче говоря, есть ли способ сохранить текстовые представления в одной строке, и даже если одно текстовое представление занимает две строки, второе текстовое представление может начаться сразу после того, где закончился текст для forst Textview?

Заранее спасибо. Мне действительно нужна помощь.


person Sudhanshu    schedule 14.05.2014    source источник
comment
Я думаю, что с относительной компоновкой этого не добиться. Когда вы устанавливаете ширину wrap_content для первого textView, он будет измерять их ширину для их содержимого (он не будет разрывать строки и заполняет родительский элемент). Второй textView, который будет располагаться справа от первого, будет иметь странную ширину. Для достижения желаемого лучше использовать LinearLayout с параметром Layout_weight для дочерних элементов.   -  person Alexander Mikhaylov    schedule 14.05.2014
comment
Спасибо за ваш ответ. Я думал об этом, но три текстовых представления содержат непрерывный текст, поэтому пользователю кажется, что это одна большая строка, но в исходном коде я хочу, чтобы текст был разделен на 3 текстовых представления. С layout_width первое текстовое представление будет иметь обернутый контент и не будет выглядеть непрерывным.   -  person Sudhanshu    schedule 14.05.2014


Ответы (1)


Это можно легко сделать с LinearLayout с weight.

Метод 1 - XML ​​ (укажите требуемые отступы или поля)

<LinearLayout
    android:layout_width="match_parent"
    android:weightSum="3"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="TextViewTextViewTextViewTextView" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0px"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

Метод 2 - программно (укажите необходимые отступы или поля)

tv2 = (TextView)findViewById(R.id.textView2);
tv3 = (TextView)findViewById(R.id.textView3);
tv4 = (TextView)findViewById(R.id.textView4);

android.widget.LinearLayout.LayoutParams params = new android.widget.LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);

tv2.setLayoutParams(params);
tv3.setLayoutParams(params);
tv4.setLayoutParams(params);
person canova    schedule 14.05.2014
comment
Спасибо за ответ, я попробую и вернусь к вам. - person Sudhanshu; 14.05.2014
comment
это помогло @Sudhanshu - person canova; 14.05.2014
comment
ну, это действительно помогло мне в определенной степени, но я хочу, чтобы текст был непрерывным, как будто это одно предложение. И это отлично разделяется на три столбца, но не делает текст непрерывным. то есть первое текстовое представление простирается до середины второй строки, а затем второе текстовое представление начинается оттуда, а затем продолжается до середины третьей строки, а затем содержимое третьего текстового представления начинается там и продолжается до четвертой строки. - person Sudhanshu; 14.05.2014
comment
Кроме того, если вы думаете достичь того, чего я хочу, я могу быть на неправильном пути, не стесняйтесь указать на это и предложить другой подход :) - person Sudhanshu; 14.05.2014
comment
Используя вышеупомянутый подход, я наконец смог это сделать, спасибо :) Хотя невозможно выровнять текст в 3 текстовых представлениях как непрерывную строку, пока не будут использованы отступы, которые нарушат ваш пользовательский интерфейс на разных устройствах. - person Sudhanshu; 20.05.2014