以编程方式使用XML布局作为模板创buildandroidbutton

我有一个包含TextView的LinearLayout,并且总是会。 TextView下面至less还会有一个button,但在某些情况下可能会有多个button。

我可以成功创build和添加尽可能多的button,因为我需要编程。 我也可以用编程方式成功设置我需要这些button的外观相关参数/选项。

问题是我不知道如何告诉程序创build的button,它应该使用包含外观和布局参数的XML资源文件,而不是以编程方式设置这些参数。

我已经看了类似的命名问题,并花费时间搞乱API本身,没有用。

编辑:
下面是我正在尝试做的一个近似,希望能够使我的解释更加清晰:

private TextView textView; private SomeObject someObject; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View scrollView = inflater.inflate(R.layout.fragment_play_game, container, false); textView = (TextView) scrollView.findViewById(R.id.game_data_text); textView.setText(someObject.getTextForTextView()); LinearLayout layout = (LinearLayout) scrollView.findViewById(R.id.game_data_container); for (String optionText : someObject.getTextForButtons()) { layout.addView(createOptionButton(optionText, layout)); } return scrollView; } private View createOptionButton(String optionText, LinearLayout layout) { Button optionButton = new Button(this.getActivity()); // set button layout/options here, somehow?? optionButton.setText(optionText); return optionButton; } 

我的XML布局文件的片段看起来像这样(这是LinearLayout,我试图添加button):

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/game_data_container" etc... > <TextView android:id="@+id/game_data_text" etc... /> </LinearLayout> </ScrollView> 

另外,如果我要为button创build一个XML布局文件(让我们称之为custom_button.xml),它应该看起来像这样?

 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/play_game_option_button" etc... /> 

更新:
只是为了扩大MrFox @所谈论的内容,我所做的就是取代这条线:

 Button optionButton = new Button(this.getActivity()); 

与这一个:

 Button optionButton = (Button) inflater.inflate(R.layout.play_game_option_button, layout, false); 

…它膨胀一个xml文件只包含一个button布局(button模板)。 在这种情况下,它将返回该文件的根视图,该视图只是该button,因为文件中的button之上没有父视图。

但是,如果我已经将最后一个布尔值(attachToParent)设置为true,它将返回button所在的根容器(这只是传递到调用中的“布局”variables)。

现在我可以使用此模板生成尽可能多的button。

Solutions Collecting From Web of "以编程方式使用XML布局作为模板创buildandroidbutton"

你有没有想过做一个布局,只是与应用程序的XML样式的button,然后膨胀到你的线性布局?

就像是:

inflater.inflate(R.layout.StyledButton,MyLinearLayout,true);

/res/layout/my_button_layout.xml下的button为xml

 <Button xmlns:android="http://schemas.android.com/apk/res/android" ... /> 

代码在您的活动

 myButton = (Button)inflate.inflate(R.layout.my_button_layout, null); myView.addView(myButton);