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