在android中以编程方式创建一个按钮数组

时间:2016-01-29 09:21:09

标签: android android-layout button

我目前正在学习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。

4 个答案:

答案 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

示例:

enter image description here 上次修改:抱歉不是AutoFitLayout是FlowLayout我编辑了答案;

解决您的问题?

答案 2 :(得分:0)

对于没有出现超过7的按钮的问题,您可以尝试将您的LinearLayout answer_layout包装在ScrollView或Horizo​​ntalScrollView中,以获取xml文件中的水平滚动行为。

要以编程方式更改按钮的宽度和高度,您可以尝试此回答https://stackoverflow.com/a/11294075/1331743 来自现有职位。

答案 3 :(得分:0)

尝试

b.setWidth(50);
b.setHeight(50);

数字是像素,所以也许你必须将dp转换为像素。