0

Android のアクティビティ画面にテレビのリモコン インターフェイスを描画したいと考えています。しかし、ボタンを適切な場所に配置することに成功しません。ボタンを初期化するために内部でグリッドを使用しているため (ちなみにプログラムで)、GridLayout を使用してボタンをサブビューとして配置するのが最善の方法であると考えました。(以前TableLayoutで試していたのですが、高さが2つ以上のTableRowを超えるボタンを初期化する方法がわかりませんでした。)

しかし、GridLayout クラスは、1 つのボタンのサイズを変更するとすべてのボタンを自動的にリセットするため、ビューの見栄えがかなり悪くなります。ボタンが GridLayout を使用する正確な場所を設定する方法はありますか? または、別のタイプのレイアウトをお勧めしますか?

これは、すべてが最後にどのように見えるかを私が期待するものです(「Endgeräteauswählen」ボタンを除く):

ここに画像の説明を入力

4

1 に答える 1

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);
于 2013-01-22T13:54:58.637 に答える