Я новичок в разработке приложений для Android, и я пытаюсь создать экран, полный маленьких кнопок.Для этой цели я создал класс TableLayout, в котором я перезаписал метод onSizeChanged следующим кодом:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if(mRows == null && mButtons == null){
Integer height = new Integer(mActivity.getString(R.string.buttonHeight));
Integer width = new Integer(mActivity.getString(R.string.buttonWidth));
mColumnCount = h / height.intValue();
mRowCount = w / width.intValue();
mRows = new ArrayList<TableRow>();
mButtons = new ArrayList<Button>();
int buttonID = 0;
for(int i = 0; i < mColumnCount ; i++) {
mRows.add(new TableRow(mActivity));
mRows.get(i).setPadding(0, 0, 0, 0);
addView(mRows.get(i));
for(int j = 0; j < mRowCount; j++){
mButtons.add(new Button(mActivity));
mButtons.get(buttonID).setLayoutParams(new TableRow.LayoutParams(width.intValue(), height.intValue()));
mButtons.get(buttonID).setBackgroundResource(R.drawable.btn_normal);
mButtons.get(buttonID).setClickable(true);
mButtons.get(buttonID).setSelected(false);
mButtons.get(buttonID).setPadding(0, 0, 0, 0);
mButtons.get(buttonID).setOnClickListener(this);
mButtons.get(buttonID).setId(buttonID);
mRows.get(i).addView(mButtons.get(buttonID));
buttonID++;
}
}
defineBorders();
}
}
Теперь код работает нормально, когда запускается на Android 2.2 или выше, но при запуске я получаю пустой экранAndroid 2.1 или ниже.У меня нет никаких компонентов, которые требуют Android 2.2 для выполнения.На самом деле все компоненты в значительной степени относятся к API уровня 1.
Кроме того, код прекрасно работает и на 2.1, если макет создан до того, как он передан в качестве параметра в Activity.setContentView ().Но мне нужен параметр размера экрана, чтобы макет адаптировался к разным размерам экрана, и, исходя из моего понимания, я могу получить его только из метода view.onSizeChanged.
Кроме того, при поиске в стеке вызовов.он показывает следующую последовательность на Android 2.1, когда фреймворк вызывает view.onSizeChanged:
onSizeChanged (), onLayout ()
Когда последовательность на Android 2.2 имеет вид:
onSizeChanged (), onLayout (), onMeasure (), onLayout ()
Возможно, это дефект представления структуры?Или структура представления изменилась после 2.1?Какие-либо предложения относительно курса действий?