Android关于 gridlayout的问题
publicclassGridLayoutTestextendsActivity{GridLayoutgridLayout;//定义16个按钮的文本String[]cha...
public class GridLayoutTest extends Activity
{
GridLayout gridLayout;
// 定义16个按钮的文本
String[] chars = new String[]
{
"7" , "8" , "9" , "÷",
"4" , "5" , "6" , "×",
"1" , "2" , "3" , "-",
"." , "0" , "=" , "+"
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridLayout = (GridLayout) findViewById(R.id.root);
for(int i = 0 ; i < chars.length ; i++)
{
Button bn = new Button(this);
bn.setText(chars[i]);
// 设置该按钮的字体大小
bn.setTextSize(40);
// 指定该组件所在的行
GridLayout.Spec rowSpec = GridLayout.spec(i / 4 + 2);
// 指定该组件所在列
GridLayout.Spec columnSpec = GridLayout.spec(i % 4);
GridLayout.LayoutParams params = new GridLayout.LayoutParams(
rowSpec , columnSpec);
// 指定该组件占满父容器
params.setGravity(Gravity.FILL);
gridLayout.addView(bn , params);
}
}
}
很常见的计算器界面代码了,GridLayout.spec(i / 4 + 2)中的(i / 4 + 2)和 GridLayout.spec(i % 4);中的(1%4)不是很理解,求解答,菜鸟初学者,让各位见笑了 展开
{
GridLayout gridLayout;
// 定义16个按钮的文本
String[] chars = new String[]
{
"7" , "8" , "9" , "÷",
"4" , "5" , "6" , "×",
"1" , "2" , "3" , "-",
"." , "0" , "=" , "+"
};
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridLayout = (GridLayout) findViewById(R.id.root);
for(int i = 0 ; i < chars.length ; i++)
{
Button bn = new Button(this);
bn.setText(chars[i]);
// 设置该按钮的字体大小
bn.setTextSize(40);
// 指定该组件所在的行
GridLayout.Spec rowSpec = GridLayout.spec(i / 4 + 2);
// 指定该组件所在列
GridLayout.Spec columnSpec = GridLayout.spec(i % 4);
GridLayout.LayoutParams params = new GridLayout.LayoutParams(
rowSpec , columnSpec);
// 指定该组件占满父容器
params.setGravity(Gravity.FILL);
gridLayout.addView(bn , params);
}
}
}
很常见的计算器界面代码了,GridLayout.spec(i / 4 + 2)中的(i / 4 + 2)和 GridLayout.spec(i % 4);中的(1%4)不是很理解,求解答,菜鸟初学者,让各位见笑了 展开
展开全部
rowSpec和columnSpec分别设置了一个按钮的位置是第几行和第几列。
(i / 4 + 2)的意思是String[] chars中id为i的元素,所处行数是i/4+2。因为i是int型,所以i/4向下取整。至于那个+2,无所谓的。
i%4的意思是i/4后的余数,因为计算器排版中一行有4个元素,所以比如2这个元素,它在String[] chars中id是9,那么他的位置是9/4的余数,也就是1,列数用0,1,2,3表示,所以它在第二列。
(i / 4 + 2)的意思是String[] chars中id为i的元素,所处行数是i/4+2。因为i是int型,所以i/4向下取整。至于那个+2,无所谓的。
i%4的意思是i/4后的余数,因为计算器排版中一行有4个元素,所以比如2这个元素,它在String[] chars中id是9,那么他的位置是9/4的余数,也就是1,列数用0,1,2,3表示,所以它在第二列。
追问
明白了多谢了,经过你的提示,才想起括号里是int型,才开始一直觉得会有小数,+2是因为显示框和清除按钮占了两行
追答
那个+2可有可无,因为我不建议用显示框和清除按钮去和GridView重合,或者加入GridView里面。
开发时一般使用LInearLayout从上到下依次放入显示框,清除按钮,和GridView。这样的布局比较好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询