Реализовать новую строку в макете потока в Android
Мой вопрос похож на этот
Как остановить GridView от обрезки моих изображений?
Iam Используя Flowlayout для создания Облака тегов, я смог его создать. Я раздуваю текстовое представление, поскольку текст может различаться, я видел все примеры, в которых используется новая строка с фиксированным макетом XML. как реализовать новую строку в раздутом текстовом виде.
2 ответа
Родительский макет
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.example.customns"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
tools:context=".CustomActivity"
android:orientation="vertical">
<com.example.customns.FlowLayout
android:id="@+id/loadlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
</com.example.customns.FlowLayout>
</RelativeLayout>
Макет, который будет раздут в родителе
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.example.customns"
android:id="@+id/buttonContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@color/blue"
android:orientation="horizontal" >
<TextView
app:layout_newLine="true"
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
layout_newLine не работает в раздутом макете, который работает, если у меня есть все текстовое представление в родительском макете. любое предложение, пожалуйста
Похоже, что флаг новой строки на FlowLayout.LayoutParams
объект не может быть изменен во время выполнения. Вам нужно будет либо изменить саму библиотеку, чтобы добавить эту возможность, либо сохранить отдельный файл макета для случая, когда вам нужно надуть TextView с помощью символа новой строки xml.
Если вы хотите разбить текст на две строки и продолжать использовать FlowLayout, вам нужно накачать два отдельных TextViews, один для первой строки и один для второй. Вам также нужно будет вручную рассчитать количество текста, которое вы можете разместить на экране, чтобы сделать это.