У меня есть следующий код для создания таблиц, где люди вводят числа (как в Excel, но более упрощенно)
public class Table extends Fragment {
private TableLayout tableLayout;
private EditText[][] editTexts;
private int x, y;
private int shape;
Table(int shape) {
this.shape = shape;
}
int getX() {
return x;
}
void setX(int x) {
if (x > 0) this.x = x;
}
int getY() {
return y;
}
void setY(int y) {
if (y > 0) this.y = y;
}
void refresh() {
tableLayout.removeAllViews();
TableRow[] tableRows = new TableRow[y];
editTexts = new EditText[y][x];
for (int i = 0; i < tableRows.length; i++) {
tableRows[i] = new TableRow(getContext());
tableLayout.addView(tableRows[i]);
for (int j = 0; j < editTexts[i].length; j++) {
editTexts[i][j] = new EditText(getContext());
editTexts[i][j].setPadding(10, 0, 10, 0);
editTexts[i][j].setBackground(getResources().getDrawable(shape, Objects.requireNonNull(getActivity()).getApplicationContext().getTheme()));
editTexts[i][j].setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);
editTexts[i][j].setMinEms(1);
editTexts[i][j].setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
tableRows[i].addView(editTexts[i][j]);
}
}
}
String getElement(int x, int y) {
return editTexts[y][x].getText().toString();
}
void setElement(String string, int x, int y) {
editTexts[y][x].setText(string);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_table, container, false);
tableLayout = new TableLayout(getContext());
FrameLayout frameLayout = view.findViewById(R.id.frame_layout);
frameLayout.addView(tableLayout);
refresh();
return view;
}
}
Но у меня есть проблема: эта таблица не может автоматически изменять размеры своих столбцов на-fly.Например, я набрал несколько цифр и получил:
Изображение 1:

Затем я нажимаю кнопку "Назад" на моемпозвоните и получите:
Изображение 2:

Мой вопрос: как получить результат, как на рисунке 2, не нажимая ничего, я хочу изменить размер столбцов таблицы при наборе текста, а не после этого .
Спасибо.