我编写的活动使用了完全由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)转换为布局。
从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" />