How can I get an Android TableLayout to fill the screen?

后端 未结 5 1837
日久生厌
日久生厌 2020-12-13 19:11

I\'m battling with Android\'s awful layout system. I\'m trying to get a table to fill the screen (simple right?) but it\'s ridiculously hard.

I got it to work someho

5条回答
  •  爱一瞬间的悲伤
    2020-12-13 19:23

    Finally worked out how to do this. Gave up on TableLayout and just used horizontal LinearLayouts inside a vertical one. The critical key is to set the weight. If you specify FILL_PARENT but with the default weight, it doesn't work:

    LinearLayout buttonsView = new LinearLayout(this);
    buttonsView.setOrientation(LinearLayout.VERTICAL);
    for (int r = 0; r < 6; ++r)
    {
        LinearLayout row = new LinearLayout(this);
        row.setOrientation(LinearLayout.HORIZONTAL);
        for (int c = 0; c < 4; ++c)
        {
            Button btn = new Button(this);
            btn.setText("A");
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
            lp.weight = 1.0f;
            row.addView(btn, lp);
        }
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
        lp.weight = 1.0f;
        buttonsView.addView(row, lp);
    }  
    
    ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
    setContentView(buttonsView, lp);
    

提交回复
热议问题