2013-01-22 22 views
0

我想在Android Activity屏幕上绘制电视遥控界面​​。但是我没有成功将按钮放到正确的位置。因为我在内部使用网格来初始化按钮(按照程序的方式),我认为使用GridLayout并将按钮作为子视图应该是最好的方法。 (我之前用TableLayout尝试过,但是我找不到如何初始化一个高度超过两个或更多TableRows的按钮。)Android中用于远程控制界面的类似网格的布局?

但是,当我更改大小时,GridLayout类会自动重置所有按钮一个按钮,结果我的观点看起来很糟糕。有没有办法设置我的按钮应该使用GridLayout的确切位置?或者你会推荐其他类型的布局?

这是我期待整个事情看起来像在结束(除 “Endgeräteauswählen” 按钮):

enter image description here

回答

1

尝试相对布局:

RelativeLayout Main = new RelativeLayout(this); 
    RelativeLayout.LayoutParams viewParamsCenter = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT); 
    Main.setLayoutParams(viewParamsCenter); 

    Button but = new Button(this); 
    but.setText("BTN"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    viewParamsCenter.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("BTN 2"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    viewParamsCenter.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("Center"); 
    but.setId(998900); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.CENTER_IN_PARENT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("below"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.BELOW, 998900); 
    viewParamsCenter.addRule(RelativeLayout.CENTER_IN_PARENT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("Center above"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.ABOVE, 998900); 
    viewParamsCenter.addRule(RelativeLayout.CENTER_IN_PARENT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("Center left"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.LEFT_OF, 998900); 
    viewParamsCenter.addRule(RelativeLayout.CENTER_IN_PARENT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("Center right"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.RIGHT_OF, 998900); 
    viewParamsCenter.addRule(RelativeLayout.CENTER_IN_PARENT); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    but = new Button(this); 
    but.setText("Bottom"); 
    but.setBackgroundResource(R.drawable.ic_launcher); 
    viewParamsCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    viewParamsCenter.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    but.setLayoutParams(viewParamsCenter); 
    Main.addView(but); 

    RelativeLayout Main_SUPER = (RelativeLayout) findViewById(R.id.relativeLayout); 
    Main_SUPER.addView(Main); 
+0

非常感谢你很多,我会明天尝试,并告诉你它是否工作! ;) – CGee