将xml定义的布局与编程的布局相结合

时间:2012-11-29 12:33:52

标签: android

我编写的活动使用了完全由xml定义的布局,例如:

setContentView(R.layout.my_layout_defined_by_xml);

我还编写过使用完全以编程方式创建的布局的活动,例如:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    game_frame_layout = new FrameLayout(getApplicationContext());

    game_frame_layout.addView(some_view_I_made);

    setContentView(game_frame_layout);

但我从来没有做过,也不知道该怎么做,将两者结合起来(甚至可以这样做吗?)例如,假设我希望整个屏幕充满xml中定义的按钮和视图,但希望以编程方式在某处添加一个额外的按钮。或者相反,我可能希望以编程方式创建布局,包括由xml定义的子布局。

我怀疑它实际上可能非常简单,但有一个问题是我不知道如何将layoutResID(如R.id.my_layout_defined_by_xml)转换为布局。

1 个答案:

答案 0 :(得分:4)

您可以从xml文件中创建一个View对象:

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.your_layout_file_name, null);

反之亦然: 您可以创建一个扩展View的类,例如MyTextView,当您想要将它包含在xml文件中时,您可以这样做:

<com.example.mypackage.MyTextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="false" />