我目前正在学习android,我正在尝试以下列方式为我的应用创建一系列按钮:
LinearLayout answer_layout = (LinearLayout)findViewById(R.id.answer_layout);
idCount = answer_layout.getId() + 1000;
for(int i = 0 ; i<letters.length ; i++)
{
Button b = new Button(this);
b.setText(letters[i]);
b.setTypeface(null, Typeface.BOLD);
b.setBackgroundResource(R.drawable.puzzletilebg);
b.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
b.setIncludeFontPadding(false);
b.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
b.setId(idCount + i);
b.setTag(Integer.valueOf(i));
bLetters[i] = b;
answer_layout.addView(b);
}
}
当我运行此代码时,我可以根据字符串的长度值获得一行按钮。我的问题是按钮显示拉伸,当长度值超过7时,按钮不会出现。对于这个问题,我尝试实现这里建议的方法(How do I programmatically add buttons into layout one by one in several lines?),但我没有得到任何结果。我必须使用哪些参数才能使按钮的形状成为完美的正方形,并确保它们的尺寸与所有屏幕尺寸相同?我的按钮背景可绘制尺寸为50x50。
答案 0 :(得分:0)
而不是LinearLayout
使用GridLayout
答案 1 :(得分:0)
如果你想要一个完美的方形变化
LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
到
LinearLayout.LayoutParams(50, 50);
并且如果你的linearLayour是水平的,那么按钮就会消失 在屏幕的边缘。 你可以使用Gridlayout而不是LinearLayout,但是如果你想要像LinearLayout这样的东西我推荐:FlowLayout
示例:
上次修改:抱歉不是AutoFitLayout是FlowLayout我编辑了答案;
解决您的问题?
答案 2 :(得分:0)
对于没有出现超过7的按钮的问题,您可以尝试将您的LinearLayout answer_layout
包装在ScrollView或HorizontalScrollView中,以获取xml文件中的水平滚动行为。
要以编程方式更改按钮的宽度和高度,您可以尝试此回答https://stackoverflow.com/a/11294075/1331743 来自现有职位。
答案 3 :(得分:0)
尝试
b.setWidth(50);
b.setHeight(50);
数字是像素,所以也许你必须将dp转换为像素。