3

有没有办法将基于 xml 的布局和“手动”布局结合起来?例如:

我使用这样的“标准”xml布局:

 setContentView(R.layout.mainscreen);

然后我想要一些更动态的内容,像这样添加它:

 LinearLayout layout = new LinearLayout(this);
 setContentView(layout);
 layout.addView(new CreateItemButton(this, "Button", 1));

我意识到我不能像上面一行那样创建一个新的布局,但我可能不得不以某种方式初始化 xml 布局。但是 - 是否有可能,或者如果我想动态添加组件,我是否只需要 100% 手动布局?或者是否有另一种更优雅/正确的方法?

(我想要做的是根据从数据库中获取的条目创建按钮。这些按钮在数量和文本/内容方面会很谨慎,因此尝试动态添加它们而不是在 xml 布局文件中。

4

2 回答 2

6

您可以将任何元素动态添加到您的 xml 布局中。您必须在 xml 布局中有一个容器,您将在其中添加动态元素。说 id="container" 的空 LinearLayout。您还可以动态构建所有内容并 setContentView(yourView); where is yourView 是添加了其他子元素的根布局元素。

前任:

Button myButton = new Button(this);
myButton.setLayoutParams(params);
LinearLayout container = (LinearLayout)findViewById(R.id.container);
container.addView(myButton);

或者

LinearLayout myLayout = new LinearLayout(this);  
...
container.addView(myLayout);
于 2012-08-02T22:39:11.037 回答
1

我希望它对你有帮助。

试试这个代码...

public class MainActivity extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);   

       RelativeLayout rl= (RelativeLayout) findViewById(R.id.rl);
       Button b2=new Button(this);
       b2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
       b2.setText("Dynamic");
       b2.setTextSize(30);
       b2.setTextColor(b1.getTextColors());
       rl.addView(b2);
    }
}
于 2012-08-03T05:21:14.053 回答