Фон
В моем приложении для Android я программно добавляю, удаляю элементы строк в таблице и управляю ими. Мне нужно установить параметры макета элементов в TableRow() для этих событий манипуляции с таблицей.
Проблема
После перехода с Android 5.0 на Android 7.0 и запуска приложения на другом планшете строки таблицы не отражают определенные параметры макета.
Чтобы уточнить:
Конфигурация 1:
- Аппаратное обеспечение: Samsung Galaxy Tab4
- Версия Android: 5.0.2
- Результат: строка таблицы отформатирована правильно
Конфигурация 2
Аппаратное обеспечение: Samsung Galaxy Tab S2
Версия Android: 7.0
Результат: строка таблицы не отформатирована
Пример кода
//Define Layout Parameters
rowLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
tableLayoutParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
editTextLayoutParams = new TableRow.LayoutParams(100, 40);
tvLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
//Create new table tow
tableRow = new TableRow(getActivity());
tableRow.setLayoutParams(rowLayoutParams);
//Define Margins
int etMargin1 = (int)getActivity().getResources().getDimension(R.dimen.etMargin1);
int etMargin2 = (int)getActivity().getResources().getDimension(R.dimen.etMargin2);
int tvMargin1 = (int)getActivity().getResources().getDimension(R.dimen.tvMargin1);
int tvMargin2 = (int)getActivity().getResources().getDimension(R.dimen.tvMargin2);
if(editable)
{
//Create Edit Texts
EditText exampleEt = new EditText(getActivity());
editTextLayoutParams.setMargins(etMargin1,5,etMargin2,5);
exampleEt.setLayoutParams(editTextLayoutParams);
tableRow.setLayoutParams(rowLayoutParams);
tableRow.addView(exampleEt);
}
else
{
//Create Text Views
TextView exampleTv = new TextView(getActivity());
//Set Layout Params
tvLayoutParams.setMargins(tvMargin1,5,tvMargin2,5);
exampleTv.setLayoutParams(tvLayoutParams);
tableRow.setLayoutParams(rowLayoutParams);
tableRow.addView(exampleTv);
}
Дополнительная спецификация
Обратите внимание на то, что в примере кода редактирование текста отличается от текстовых представлений. Только элементы Edit Text не форматируются должным образом. Формат полей текстового представления соответствует ожидаемому.