Я использую LayoutInflater
для добавления макета в настраиваемую группу просмотра (не подкласс ...Layout
, а простую группу просмотра).
После короткой битвы с ним и после реализации всего, что было сказано в этот пост, мне удалось наконец-то отобразить контент, но по какой-то причине он выложен не так, как мне хотелось бы. В 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)
, но это заставило их растянуться, чтобы заполнить весь макет, один поверх другого.
Должно быть, мне здесь не хватает чего-то очень маленького. Кто-нибудь знает, что это может быть?