У меня есть пользовательский класс, который распространяется на класс ViewGroup
. Внутри я хочу добавить несколько представлений, включая два буттонов, которые должны быть рядом друг с другом. Я придумал создать XML-файл с этим представлением, а затем добавить его с помощью addView. К сожалению, это не сработает.Добавить LinearLayout в ViewGroup
Моей второй идеей, которая, я думаю, лучше было создавать LineraLayout программно вместе с двумя кнопками, настраивая все настройки, а затем добавляя.
Это код:
//adding view to view group
addView(createView(ctx));
//function creating linearlayout and buttons
private View createView(Context ctx){
LinearLayout l = new LinearLayout(ctx);
l.setOrientation(LinearLayout.HORIZONTAL);
l.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
Button btnL = new Button(ctx);
btnL.setText("Text1");
Button btnR = new Button(ctx);
btnR.setText("Text2");
l.addView(btnL);
l.addView(btnR);
return l;
}
Проблема заключается в том, что я не вижу этой точки зрения в настоящее время на всех. Я имею в виду, что это создано из LinearLayout. В LogCat нет ошибки.
Может кто-нибудь, пожалуйста, скажите мне, что мне нужно сделать, чтобы добавить его?
EDIT:
Это код onLayout
, у меня нет onMeasure
:
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int w = getWidth();
int h = getHeight();
for (int i = 0; i < NUM_CHILDREN; i++) {
View v = getChildAt(i);
int ii = i * 4;
float fl = w * COORDS[ii]/GRID_WIDTH;
float ft = h * COORDS[ii + 1]/GRID_HEIGHT;
float fr = fl + w * COORDS[ii + 2]/GRID_WIDTH;
float fb = ft + h * COORDS[ii + 3]/GRID_HEIGHT;
v.layout(Math.round(fl), Math.round(ft), Math.round(fr),
Math.round(fb));
}
}
В общем, я просто используя огромный стол, где я получил информацию, что точные размеры даны вид должен быть.
Это помогло бы увидеть код для '' onMeasure' и onLayout' методы пользовательских 'ViewGroup'. – Luksprog
@Luksprog только что добавил. – sebap123
Почему у вас первая идея с загрузкой двух кнопок из xml не работает? –