Перенос динамических TextViews на следующую строку / строку в линейном макете - PullRequest
4 голосов
/ 28 февраля 2012

Я пытаюсь создать пользовательский интерфейс, в котором у меня есть линейный макет, который был определен в XML.

В соответствии с пользовательским вводом, мне нужно добавить несколько TextViews в этот линейный макет.Я могу сделать это.

Моя настоящая проблема в том, что когда у меня больше текстовых видов, они располагаются рядом друг с другом, а некоторые текстовые виды текста скрыты или растянуты вертикально, как показано на рисунке ниже.

please see this image (Current)

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

I wish, I can do this way

Ниже приводится моя конфигурация линейного макета в XML:

    <RelativeLayout
        android:id="@+id/RL1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:paddingBottom="5dip"
        android:paddingTop="5dip" >

        <TextView
            android:id="@+id/text1"
            android:layout_width="85dip"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:gravity="left"
            android:text="Lable 1"
            android:textColor="#999999" />

        <LinearLayout
            android:id="@+id/LL1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/button1"
            android:layout_toRightOf="@+id/text1"
            android:gravity="left|center_vertical"
            android:orientation="horizontal"
            android:paddingLeft="5dip"
            android:paddingRight="5dip"
            android:paddingTop="3dip" >
        </LinearLayout>

        <Button
            android:id="@+id/button1"
            android:layout_width="30dip"
            android:layout_height="30dip"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginTop="2dip"
            android:background="@drawable/plus"
            android:clickable="true"
            android:focusable="true"
            android:paddingTop="5dip" />
    </RelativeLayout>

Может ли кто-нибудь помочь мне, каквыровняйте то же самое в коде Java.

Ответы [ 3 ]

1 голос
/ 23 марта 2015

Пожалуйста, смотрите:

Как обернуть кнопки изображения в горизонтальный линейный макет?

Как я могу сделать что-то вроде FlowLayout в Android?

Вы также можете искать в github FlowLayout.java.

Альтернативный подход дан в: Android - многострочный линейный макет

Кроме того, есть класс, который добавляет изображения в TextView: https://stackoverflow.com/a/21250752/755804 это не то же самое, что обтекание представлений в общем случае, но иногда может выполнять эту работу.

1 голос
/ 16 ноября 2012

Я хотел бы предложить вам, как вы можете обеспечить одинаковые размеры для всех ваших представлений в Linear Layout, вы можете сделать это, используя свойство weight в XML-файле, например, android: weight для этого конкретного View и когда вы используете это свойство, которое вы должны указать width = 0dp или 0dip. Думаю, это легко решит вашу проблему.

Пожалуйста, я предлагаю вам сначала ознакомиться с полным описанием того, как использовать это свойство, по следующей ссылке: - Весовое свойство с примером

0 голосов
/ 13 августа 2018

я кореец.поэтому я плохо говорю по-английски, но я вам помогу.

сначала создайте item.xml с четырьмя текстовыми полями.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">


<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/set_checkbox"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text2"
    android:text="0"
    android:layout_weight="1"
    android:gravity="center"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text3"
    android:text="0"
    android:layout_weight="4"
    android:gravity="center"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text4"
    android:text="0"
    android:layout_weight="4"
    android:gravity="center"/>
</LinearLayout>

second, создайте main.XML ', где' item.xml 'будет генерироваться динамически.«Ориентация» помогает создавать по одной строке за раз.

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

Наконец, вы можете создать четыре TextView на строку, используя код ниже.

        LinearLayout layout = (LinearLayout)findViewById(R.id.mainxml); 
        LinearLayout item = (LinearLayout)layout.inflate(this.getContext(), R.layout.itemxml, null);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
        item.setLayoutParams(params);


        CheckBox cb = item.findViewById(R.id.set_checkbox);
        TextView text2 = item.findViewById(R.id.text2);
        TextView text3 = item.findViewById(R.id.text3);
        TextView text4 = item.findViewById(R.id.text4);

        cb.setChecked(true);
        text2.setText("text2");
        text3.setText("text3");
        text4.setText("text3");

        layout.addView(item);

10-й цикл показан наследующая картина. введите описание изображения здесь

...