0

我有一个具有单个 TextView 的 XML 布局

现在我想添加 50 个按钮,我想在我的 java 文件中动态添加!

是否可以通过 java 代码向 XML 文件添加属性?或者一个活动一次可以有 2 个布局?

例如,

public class Options extends Activity
{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.options);
    Button but=new Button(this);
    but.setText("Wassup");
    // How do I add this button to the layout ?
}

}
4

4 回答 4

3

是否可以通过 java 代码向 XML 文件添加属性?

Views不,但您可以Layouts像使用setText(). resource文件本身编译后不能更改。

或者一个活动一次可以有 2 个布局?

简单的答案是否定的,但您可以使用inflate另一个布局并将其添加到当前布局。

您可以做些什么来添加一个示例Button

膨胀你的根layoutButtonsaddView(). 就像是

Layoutinflater inflater = (LayoutInflater) getSystemService
  (Context.LAYOUT_INFLATER_SERVICE);
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.layout_file);
Button but=new Button(this);
but.setText("Wassup");
// How do I add this button to the layout ?
ll.addView(but);

布局充气机

或者,如果您想将它添加到layout当前文件中的 a 中,您可以使用findViewById()并使用addView()它来添加您Buttons的。

于 2013-07-03T16:33:15.567 回答
1

考虑到您的 xml 布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/mainlayout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</TextView>

</LinearLayout>

在 setContentView(R.layout.options); 之后的 java 代码中 您可以执行以下操作:

LinearLayout linearLayout=(LinearLayout)findViewById(R.id.mainlayout);
Button button=new Button(this);
linearLayout.addView(button);

现在,您可以在线性布局中添加任意数量的按钮,如上所示。

于 2013-07-03T16:36:12.153 回答
0

对的,这是可能的。使用()setContentView(R.layout.options);获取按钮容器后。findViewById您将获得对 LinearLayout、RelativeLayout 或其他内容的引用。之后使用 Layout inflater 并以编程方式添加其他布局或组件。

希望能帮助到你!

于 2013-07-03T16:31:10.070 回答
0

只需使用 layout.addView() 其中 layout 是您通过调用 findViewById(R.id.layoutId) 获得的 ViewGroup

于 2013-07-03T16:34:42.110 回答