有没有办法将基于xml的布局和“手动”布局结合起来? F.ex:
我使用“标准”xml布局,如下所示:
setContentView(R.layout.mainscreen);
然后我想要一些更动态的内容,像这样添加:
LinearLayout layout = new LinearLayout(this);
setContentView(layout);
layout.addView(new CreateItemButton(this, "Button", 1));
我意识到我无法在上面的行中创建新的布局,但我可能不得不以某种方式初始化xml布局。但是 - 如果我想动态添加组件,是否可能,或者我只需要采用100%手动布局?或者是否有另一种更优雅/更正确的方式呢?
(我想要做的是根据从数据库中提取的条目创建按钮。这些按钮会在数量和文本/内容方面保持警惕,因此尝试动态添加它们而不是在xml布局文件中。
答案 0 :(得分:5)
您可以动态地将任何元素添加到xml布局中。 您必须在xml布局中有一个容器,您将在其中添加动态元素。说空的LinearLayout,id =“container”。你也可以动态地构建所有东西和setContentView(yourView); yourView在哪里是添加了其他子元素的根布局元素。
EX:
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);
答案 1 :(得分:0)
我希望它对你有所帮助。
试试此代码......
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);
}
}