在相同的屏幕尺寸和分辨率上使用具有不同DPI的android的网格布局

时间:2014-05-12 14:17:33

标签: android android-layout

好的,我有两个平板电脑,都有7“屏幕和1024 x 600分辨率,一个使用160dpi,另一个240dpi(可能在build.prop上更改)。我正在尝试使用网格布局但我的问题是,布局在240dpi平板电脑上显示比我的屏幕更大(1.5倍大)。 为了使这两种布局以相同的方式工作,我该怎么办?或者至少240dpi完全呈现在我的屏幕内?![在此输入图像描述] [1]

我正在使用此代码在屏幕中央制作两行按钮

gl = (GridLayout) findViewById(R.id.GridLayout1);
    for(int i = 0;i<11;i++)
    {
        for(int j =0;j<15;j++)
        {
            Button b = new Button(this);
            b.setWidth(getWindowManager().getDefaultDisplay().getWidth()/15);
            b.setHeight(getWindowManager().getDefaultDisplay().getHeight()/11);
            if(j== 7 || i==5)
            {
                b.setBackgroundColor(Color.LTGRAY);
            }
            else
            {
                b.setBackgroundColor(Color.WHITE);
            }
            gl.addView(b);
        }
    }

但它显示如下: http://i.stack.imgur.com/rmVL0.jpg

我的布局:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/GridLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="15"
android:orientation="horizontal"
android:rowCount="11" >

这些软件是在我公司工作的人的白色工作(见图),但现在我必须在两者上工作。

1 个答案:

答案 0 :(得分:0)

使用屏幕布局的相对值,而不是像素或dp。

根本原因是您的某个平板电脑报告的像素密度不正确。两个显示器的原始密度接近160 dpi。这款240dpi的平板电脑对Android来说就好像它有一个5&#34;显示,Android会将字体缩放到相同的大小。

如果这会导致240dpi平板电脑出现屏幕不动产问题,请执行以下操作:

  • 在以下某个文件夹中创建布局副本:
    • layout-w1024dp如果宽度是个问题
    • layout-h600dp如果身高是主要限制因素
  • 在主布局中,减小字体大小以适用于240dpi平板电脑。

如果屏幕尺寸低于某个最小值,这将减小字体大小以在屏幕上获得更多内容。但是,字体在非常小的屏幕上可能看起来很小(设备小于7&#34;报告正确的像素密度)。

至于相对值:到目前为止,我已经使用线性布局进行了广泛的操作,但没有使用网格布局,但这可能会帮助您入门。

假设您有一个水平的LinearLayout(子列以列排列),并且您希望它们相对于彼此保持相同的宽度,占据整个屏幕。

对于每个子布局,请将其layout_width设置为0dp并为其指定layout_weight

layout_weight相当随意 - 它只是重要的比例,因为子布局的layout_weight参数的比率等于它们的宽度比。因此,有三个子布局的layout_weight为2对1对2将产生与200对100对200相同的效果。

对于包含所有这些内容的LinearLayout,请指定weightSum,即其子项layout_weight的总和。将父级layout_width设置为fill_parent