Подтвердить что ты не робот

Обложка Textview вокруг View

Я стараюсь, чтобы мои горизонтальные макеты использовали доступную комнату.

В информации, показывающей активность, у меня есть "поле фактов", за которым следует большая коробка текста. Я хочу, чтобы инфобокс плавал вправо, как показано на следующем рисунке.

Возможно ли это с помощью андроида TextView api?

Example picture

4b9b3361

Ответ 1

Я бы предложил использовать WebView для этого. Вы можете отформатировать текст в веб-представлении с помощью обычного форматирования HTML/CSS, с которым ваш желаемый макет довольно прост.

Ответ 2

нашел это решение!! проверьте его из источника --- > источник ответа

Как добавить несколько элементов макета

Вот проблема, с которой люди могут столкнуться при работе с макетами на Android.

Предположим, вы хотите разместить изображение в середине предложения. вы можете добавить пару TextView и ImageView, но если горизонтальное пространство становится слишком маленьким, два TextViews начнут обертываться независимо друг от друга, что будет выглядеть странно. Вы хотите, чтобы изображение было частью вашего TextView и всего предложения, чтобы обернуть вокруг красиво. Для этого: * заменить три объекта на один Spannable TextView * используйте SpannableStringBuilder для добавления всех ваших строк (не забудьте добавить дополнительный символ (например, пробел), который будет заменен вашим изображением) * и, наконец, использовать setSpan (ImageSpan, begin, end, flag) в этом построителе, где ImageSpan - это ImageSpan, содержащий выталкиваемый снимок вашего изображения, начало - индекс введенного вами символа

И вот как выглядит код:

добавить android: bufferType = "spannable" в ваш TextView

SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(mContext.getText(R.string.part1));
int lengthOfPart1 = builder.length();
builder.append(" ");
builder.append(mContext.getText(R.string.part2));
Drawable d = mContext.getResources().getDrawable(R.drawable.picasaIcon);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); // <---- Very important otherwise your image won't appear
ImageSpan myImage = new ImageSpan(d);
builder.setSpan(myImage, lengthOfPart1, lengthOfPart1 + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(builder);

Ответ 3

Я знаю это поздно, но для людей, которые все еще пытаются это сделать, вот библиотека, цель которой - достичь именно этого. https://github.com/deano2390/FlowTextView

Ответ 4

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