Можно создавать представления программно, но вы действительно должны использовать XML. Таким образом, поведение ваших приложений, логика (в коде) и его интерфейс (в XML) разделены. Кроме того, гораздо быстрее создавать макеты в XML.
Вот пример использования настраиваемого представления, оно имеет одно текстовое представление внутри:
public class MyRelativeLayout extends RelativeLayout {
private TextView textView;
public MyRelativeLayout(Context context) {
super(context);
textView = new TextView(context);
textView.setText("Hello");
//we must use LayoutParams objects to manage layout properties programmatically
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.leftMargin = 5;
params.rightMargin = 5;
textView.setLayoutParams(params);
addView(textView); //add to our layout
}
}
Я добавил только одно представление текста,и ничего не устанавливайте, кроме боковых полей, но код уже длинный, а вы можете сделать все это в XML так просто:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:text="Hello"/>
</RelativeLayout>
И чем сложнее макет, тем лучшесоздать его в XML. Короче говоря, используйте XML для макетов и раздувайте его в своем коде вместо создания пользовательских представлений.