Работа layoutoв

Интерфейс, диалоги, темы, стили, меню
Ответить
ammaximus
Сообщения: 2
Зарегистрирован: 02 июн 2013, 13:26

Работа layoutoв

Сообщение ammaximus » 06 июн 2013, 10:12

Достаточно далеко продвинулся в изучении андроида, и тут выяснилось, что не понимаю как работают лейауты.

Сделал собственные 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 больше чем нижнего, а работает все в точности наоборот - верхний занимает много, а нижний мало. В чем дело????

Ответить