我知道由于缺乏研究,这可能不是最好的问题,但实际上我不知道从哪里开始看这里。一切似乎应该工作得很好。无论如何,我试图以编程方式向我的应用程序UI添加几个按钮,以确保UI适合并无缝地适应所有屏幕。 Here is a very rough idea of the format I'm needing (with text in each button of course)
CFLAGS="-O2 -fno-tree-dce -fno-optimize-sibling-calls" rvm install [your-version]
我甚至都没有找到一些神奇的东西,而是为我解决这个问题,因为我太懒了"解。指出我正确的方向,告诉我需要看的地方,这样的东西。我喜欢解决这些问题,但从正确的位置出发将是非常了不起的。
答案 0 :(得分:0)
您对所有按钮使用相同的RelativeLayout.LayoutParams params
。在Java中,所有非基本类型的赋值都是通过引用来创建的,所以当你这样做时
RelativeLayout.LayoutParams updateParams = params;
RelativeLayout.LayoutParams installParams = params;
RelativeLayout.LayoutParams dlFamilyParams = params;
等等,您将内存中的同一对象分配给各种变量。变量只是对某些内存地址的文本引用,因此使用不同的名称,您总是引用内存中的同一对象。
为每个按钮设置一些不同的布局参数属性,以将它们放置到视图中。但是如果我们告诉我们总是引用内存中的同一个对象,那么我们总是更新相同的对象,因此我们覆盖了之前的设置,我们只保留最后的设置。
因此,您要为所有按钮设置相同的params对象。
这些错误的组合导致所有按钮与他的设置具有相同的RelativeLayout.LayoutParams,它们被放置在另一个上面,您只能看到最后添加的。
您必须为每个按钮创建不同的params对象,如下所示:
RelativeLayout.LayoutParams updateParams = new RelativeLayout.LayoutParams(size.x / 5, 200);
...
RelativeLayout.LayoutParams installParams = new RelativeLayout.LayoutParams(size.x / 5, 200);
...
要分析视图问题,我建议您使用Layout Inspector工具,可通过菜单Tools - >访问。的Android
答案 1 :(得分:0)
试试这个
RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_main);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT );
for (int i=0; i<10; i++) {
Button button= new Button(this);
button.setText("some_text");
button.setId(i);
// lp.addRule(RelativeLayout.RIGHT_OF, <Id>);
layout.addView(tv2, lp);
}