Сделал собственные view (метод onDraw как раз из этого класса), но та же фигня и с простыми Button,
Код: Выделить всё
// Из класса Elements
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setColor(color);
canvas.drawOval(new RectF(0, 0, canvas.getWidth(), getHeight()), p);
super.onDraw(canvas);
}
// Основной код
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LayoutParams mainUpParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
mainUpParams.weight = 1;
LayoutParams mainDownParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
mainDownParams.weight = 5;
LayoutParams bodyParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
bodyParams.weight = 1;
LayoutParams sensorsParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
sensorsParams.weight = 1;
LinearLayout llMain = (LinearLayout) findViewById(R.id.llmain);
Element e1 = new Element(this, Color.GRAY);
Element e2 = new Element(this, Color.CYAN);
Element e3 = new Element(this, Color.RED);
Element e4 = new Element(this, Color.BLUE);
llMain.addView(e1,mainUpParams);
LinearLayout llBody = new LinearLayout(this);
llBody.setOrientation(LinearLayout.HORIZONTAL);
llBody.addView(e2,bodyParams);
LinearLayout llSensors = new LinearLayout(this);
llSensors.setOrientation(LinearLayout.VERTICAL);
llSensors.addView(e3,sensorsParams);
llSensors.addView(e4,sensorsParams);
llBody.addView(llSensors,bodyParams);
llMain.addView(llBody,mainDownParams);
}
}
Во вторых, я указываю вес верхнего mainUpParams больше чем нижнего, а работает все в точности наоборот - верхний занимает много, а нижний мало. В чем дело????