Я использую TableLayout как простой DataGrid в своем приложении. Строки добавляются в код. Проблема в; когда я меняю ориентацию экрана, на старой панели появляется новый макет таблицы.Дублирование Android TableLayout при изменении ориентации
Файл макета:
.
.
.
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView"
android:fillViewport="false"
>
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dataGrid"
android:divider="?android:attr/dividerHorizontal"
android:showDividers="middle|end">
</TableLayout>
</ScrollView>
</TableLayout>
Функция вызывается для создания записей испытаний. Я называю это из public View onCreateView
моего фрагмента.
private void fillDataGrid(TableLayout dataGrid,Context context)
{
int columnCount = 5;
int rowCount = 30;
List<TextView> fields = new ArrayList<>();
TableRow row;
dataGrid.removeAllViews();
dataGrid.invalidate();
dataGrid.setStretchAllColumns(true);
for (int j=0;j<rowCount;j++)
{
row = new TableRow(context);
if (j%2 != 0)
row.setBackgroundColor(getResources().
getColor(R.color.highlighted_text_material_light));
for (int i = 0; i < columnCount; i++)
{
TextView field;
field = new TextView(context);
field.setText("field " + i);
fields.add(field);
row.addView(field);
}
dataGrid.addView(row);
}
}
Я знаю об избыточности List<TextView> fields = new ArrayList<>();
. Я продолжаю использовать его позже.
Версии SDK:
minSdkVersion 14
targetSdkVersion 22
ошибка встречается, в android.app.Fragment
классе.
То, что я пытался до сих пор:
- Calling Invalidate() и requestLayout() методы для моего DataGrid TableLayout, родительским TableLayout и ScrollView.
- Попытка понять, сколько TableLayouts или ScrollViews дублированы. Результат был нет согласно моему тестовому коду.
- Добавление строк в xml и игнорирование функции fillDataGrid() не помогло решить проблему. Хотя строки добавляются/обрабатываются только в xml.
Что я узнал:
- Это не вынести вопрос. Потому что когда я вызвал
scrollView.setVisibility(View.INVISIBLE);
, я все еще могу прокрутить дублированный TableLayout.
Вы можете посмотреть скриншоты, которые описывают ситуацию ниже.
спасибо.
«приватная статическая таблица данных данных» была моей декларацией. Я сделал локальную переменную и нестационарную, но это не сработало. Также я забыл упомянуть, что я добавил строки вручную в xml-файл и не манипулировал TableLayout в коде и произошла ошибка. – Taha
хорошо, тогда сделайте MAT и узнайте, где вы держите свои ссылки: см. Здесь: https://developer.android.com/tools/debugging/debugging-memory.html или здесь: http: //android-developers.blogspot. де/2011/03/память-анализ-для-android.html –