Я использую LayoutInflater
для добавления макета в пользовательскую ViewGroup (не подкласс ...Layout
, а простая ViewGroup).
После короткой битвы с ним и после реализации всего, что было сказано в этой записи , мне удалось заставить контент, наконец, появляться, но по какой-то причине он не выложен так, как я хочу , В макете XML есть 3 элемента, которые необходимо распределить по горизонтали, при этом центральный элемент «толкает» их по краям.
Вот код, который раздувает макет:
private LayoutInflater inf = null;
private Paint backpaint = null;
private ViewGroup inflated = null;
private void inflate(Context context) {
this.setBackgroundColor(0x00000000);
inf = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflated = (ViewGroup)inf.inflate(R.layout.application_heading, null);
this.addView(inflated, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
inflated.measure(r, b);
inflated.layout(l, t, r, b);
}
Сначала я только добавил inflated.layout(l, t, r, b)
, но это не сработало. После того, как я добавил inflated.measure(r,b)
, я наконец-то увидел содержимое, но все это было склеено, как если бы LinearLayout
, который был основой для раздутого XML, был установлен на WRAP_CONTENT
.
Я пытался пробежаться по дочерним элементам inflated
ViewGroup и вызывать .layout(l,t,r,b)
для них, но это заставило их растягиваться, чтобы заполнить весь макет, один поверх другого.
Мне, должно быть, здесь не хватает чего-то очень маленького. Кто-нибудь знает, что это может быть?