好的,我有两个平板电脑,都有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" >
这些软件是在我公司工作的人的白色工作(见图),但现在我必须在两者上工作。
答案 0 :(得分:0)
使用屏幕布局的相对值,而不是像素或dp。
根本原因是您的某个平板电脑报告的像素密度不正确。两个显示器的原始密度接近160 dpi。这款240dpi的平板电脑对Android来说就好像它有一个5&#34;显示,Android会将字体缩放到相同的大小。
如果这会导致240dpi平板电脑出现屏幕不动产问题,请执行以下操作:
layout-w1024dp
如果宽度是个问题layout-h600dp
如果身高是主要限制因素如果屏幕尺寸低于某个最小值,这将减小字体大小以在屏幕上获得更多内容。但是,字体在非常小的屏幕上可能看起来很小(设备小于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
。