Вот настраиваемый составной компонент , который расширяет RelativeLayout
и расширяет конкретный макет из xml:
public class MyCustomView extends RelativeLayout {
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.my_custom_view, this);
// ...
}
}
Макет xml использует тег
(удаляет ненужный слой из иерархии представлений, yada yada yada):
...
... и я использую настраиваемый вид в других макетах, например:
Все внутри пользовательский вид выложен безупречно, но 20dip padding должен окружать enti если вещь не применяется . Похоже, что это не сработает, если я помещу его в тег
. Конечно, из-за отсутствия прокладки он выглядит ужасно. Где я должен разместить атрибут android: padding = "20dip"
, чтобы применить его?
Самым простым может быть расширение моего MyCustomView
FrameLayout
, и замените тег
на
- но это принесет в жертву всю вещь «сохранение неглубокой иерархии представлений», которую Ромен Гай так серьезно относится