为什么tablelayout的layout_width和_height不能覆盖三星平板电脑屏幕的整个区域?

2019年4月19日 23点热度 0条评论

大家好,

我已经在xml文件中写了这样的内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TableLayout 
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:id="@+id/tl_splash_screen" >
        </TableLayout>
</LinearLayout>

并在java文件中

TableLayout tl_splash_screen;
    int int_scr_wd;
    TableRow  tr_test;
    TextView txt_test;
    TableRow  tr_test1;
    TextView txt_test1;
    TableRow  tr_test2;
    TextView txt_test2;
    TableRow  tr_test3;
    TextView txt_test3;
    TableRow  tr_test4;
    TextView txt_test4;
    TableRow  tr_test5;
    TextView txt_test5;
    int int_tb_bk_col;
    int int_black;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.x_splash_screen);
        try
        {
            txt_test=new TextView(this);
            txt_test1=new TextView(this);
            txt_test2=new TextView(this);
            txt_test3=new TextView(this);
            txt_test4=new TextView(this);
            txt_test5=new TextView(this);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(int_scr_wd+300, LayoutParams.FILL_PARENT);

            tr_test = (TableRow) new TableRow(this);
            tr_test1 = (TableRow) new TableRow(this);
            tr_test2 = (TableRow) new TableRow(this);
            tr_test3 = (TableRow) new TableRow(this);
            tr_test4 = (TableRow) new TableRow(this);
            tr_test5 = (TableRow) new TableRow(this);

            tl_splash_screen = (TableLayout)findViewById(R.id.tl_splash_screen);

            int_tb_bk_col = Color.rgb(211,211,211);
            int_black = Color.rgb(0,0,0);

            tl_splash_screen.setBackgroundColor(int_tb_bk_col);

            txt_test.setTextColor(int_black);
            txt_test1.setTextColor(int_black);
            txt_test2.setTextColor(int_black);
            txt_test3.setTextColor(int_black);
            txt_test4.setTextColor(int_black);
            txt_test5.setTextColor(int_black);

            Display display = getWindowManager().getDefaultDisplay();
            int_scr_wd= display.getWidth();
            int as = display.getHeight();
            Log.i("", String.valueOf(int_scr_wd));
            Log.i("", String.valueOf(as));

            txt_test1.setHeight(120);
            txt_test2.setHeight(120);
            txt_test3.setHeight(120);
            txt_test4.setHeight(120);
            txt_test5.setHeight(120);

            txt_test.setText("TextViews");
            txt_test1.setText("- TextView 1");
            txt_test2.setText("- TextView 2");
            txt_test3.setText("- TextView 3");
            txt_test4.setText("- TextView 4");
            txt_test5.setText("- TextView 5");

            tr_test.addView(txt_test);          
            tr_test1.addView(txt_test1);            
            tr_test2.addView(txt_test2);            
            tr_test3.addView(txt_test3);            
            tr_test4.addView(txt_test4);            
            tr_test5.addView(txt_test5);            

            tl_splash_screen.addView(tr_test,new TableLayout.LayoutParams(layoutParams));
            tl_splash_screen.addView(tr_test1,new TableLayout.LayoutParams(layoutParams));
            tl_splash_screen.addView(tr_test2,new TableLayout.LayoutParams(layoutParams));
            tl_splash_screen.addView(tr_test3,new TableLayout.LayoutParams(layoutParams));
            tl_splash_screen.addView(tr_test4,new TableLayout.LayoutParams(layoutParams));
            tl_splash_screen.addView(tr_test5,new TableLayout.LayoutParams(layoutParams));
        }
        catch(Exception ex)
        {
            Log.i("caught error","caught while loading main page");
        }
    }

只是为了演示我已经发布了此代码。大家都可以看到我提到了textview 5,其中写入了“ textview-5”文本,该文本在屏幕上不可见,因为我没有在可滚动视图下进行tablelayout。

我想问的是,即使我定义了fill_parent,为什么表布局仍覆盖了屏幕的某些区域。

请提出一些建议。

解决方案如下:

<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="false" />

将此添加到清单文件。