Я нашел пару способов сделать это, но моя проблема в том, что мой код должен быть LinearLayout с горизонтальной ориентацией. Итак, что происходит, динамически созданные TextViews выходят из экрана.Добавление TextViews программно
код у меня есть ниже:
mProductAttrLayout.setOrientation(LinearLayout.HORIZONTAL);
mProductAttrLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
for (ProductAttribute productAttribute : aProductAttributes) {
String name = productAttribute.getName();
TextView attr = new TextView(getContext());
attr.setText(name);
attr.setPadding(8, 8, 8, 8);
attr.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
attr.setTextColor(getResources().getColor(R.color.black));
mProductAttrLayout.addView(attr);
for (int i = 0; i < productAttribute.getValues().size(); i++) {
TextView value = new TextView(getContext());
value.setText(productAttribute.getValues().get(i));
value.setTextColor(getResources().getColor(R.color.black));
value.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
value.setPadding(8, 8, 8, 8);
mProductAttrLayout.addView(value);
}
}
То, что я в настоящее время является:
| имя: значение, значение, значение, val-- |
, что мне нужно что-то вроде:
имя: значение, значение (неизвестное количество значений)
, но мне нужно идти на следующую строку в экран, если он слишком широкий, как показано ниже:
| имя: значение, значение, значение, --- |
| значение, значение, значение. ------------ |
Надеюсь, вы поймете, что мне нужно?
Что означает «перейти на следующий экран»? Ваше искусство ASCII предполагает, что вы имеете в виду «перейти к следующей строке». В этом случае я бы рекомендовал либо иметь только один «TextView», либо использовать что-то вроде макета потока, из которых [существует несколько реализаций для Android] (http://android-arsenal.com/search?q=flowlayout). – CommonsWare
Используйте макет потока, чтобы обрабатывать несколько текстовых объектов в одном макете (это будет работать как средство отображения содержимого макета). https://github.com/ApmeM/android-flowlayout –
Окно компоновки потока выглядит как решение, но я немного потерял о том, как добавить представления в макет потока? это похоже на flowlayout.addView (view)? – x10sion