aleksbim писал(а):Не могу понять почему у меня не получается.
Код: Выделить всё
public void plus1(View v){
float myweight=1F;
Button plus1=(Button) findViewById(R.id.plus1); plus1.setVisibility(View.GONE);
LinearLayout ll3stroka = (LinearLayout) findViewById(R.id.ll3stroka);
LayoutParams viewParams = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
EditText et_plus1 =new EditText(this);
et_plus1.requestFocus();
ll3stroka.weight=myweight; ????????????????????????
et_plus1.setLayoutParams(viewParams);
ll3stroka.addView(et_plus1);
}
ll3stroka.weight=myweight; weight подчеркнуто красным cannot be resolved or is not a field
Всё правильно подчёркивает. Потому что класс
LinearLayout ссылкой на объект которого является переменная
ll3stroka, не содержит аттрибута
weight. Этот атрибут содержит ВЛОЖЕННЫЙ в
LinearLayout класс
LinearLayout.LayoutParams. А поэтому его нужно задавать не в 11 строке кода, а в 5-й
[syntax=java]LinearLayout.LayoutParams viewParams = new LinearLayout.LayoutParams (LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, myweight);[/syntax]
А если хочется в 11, то тогда нужно задавать не через ссылку
ll3stroka, а через ссылку
viewParams. И при этом
viewParams должна иметь именно тип
LinearLayout.LayoutParams, потому что у родительских классов, которые выше по иерархии этого атрибута нет.
[syntax=java]viewParams.weight = myweight[/syntax]
В общем, чтобы с этим не путаться нужно хорошо разобраться "кто на ком стоит", "кто в кого входит" и "кто чьих будет"
В самом начале
16 урока про это рассказано доступно и с картинками. Их нужно рассматривать до полного понимания. Если этого будет недостаточно, то можно посмотреть ещё
тут и
тут.