Ответ 1
Вы должны использовать макет, подобный этому:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<View android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="#0F0"/>
<View android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="#0FF"/>
</merge>
где <merge>
означает "положить все, что внутри меня, в родителя, на которое меня надувают".
Затем в коде:
public class CControl extends LinearLayout {
public CControl(Context context) {
this(context, null);
}
public CControl(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.tryout, this);
}
// ......
}
В этот момент вы можете использовать свой составной элемент управления, как если бы он был LinearLayout, поэтому вам нужно будет указать во внешнем макете, если вы хотите, чтобы он был вертикальным, например, или вы могли бы установить его как значение по умолчанию внутри конструктор.