所有屏幕尺寸上的Android布局相同的相对尺寸

时间:2012-07-24 19:43:46

标签: android layout size screen

这个问题一直困扰着我好几个星期,尝试了一切,但无济于事。

我想要做的是在每个屏幕尺寸上都有完全相同的布局。让我用图片来说明:

在2.7英寸设备上: 2.7inch

在一个10.1英寸的设备上(为了说明目的,图片非常糟糕): 10.1inchdesired

但是对于目前的Android实现,我在10.1英寸设备上得到了这个: 10.1inch

简而言之,我希望我的应用程序在所有屏幕尺寸上看起来都相同(相对而言),包括按钮大小,文本缩放等。我之前通过覆盖View类,制作我自己的View并在里面绘制所有内容来做到这一点,但是使用该方法,添加视图元素变得非常快速,并且具有“onClick”回调功能的优点也消失了(因为我只是以编程方式)在覆盖的View类中绘制位图以用作按钮)。有没有办法用android xml文件实现这个?

这是我的(测试)XML代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:gravity="center">

    <Button
        android:id="@+id/button_1"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="ABCDEF" />
    <Button
        android:id="@+id/button_2"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="GHI" />
    <Button
        android:id="@+id/button_3"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="JKLM" />
</LinearLayout>

1 个答案:

答案 0 :(得分:1)

if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {     
        Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();

    }
    else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {     
        Toast.makeText(this, "Normal sized screen" , Toast.LENGTH_LONG).show();

    } 
    else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {     
        Toast.makeText(this, "Small sized screen" , Toast.LENGTH_LONG).show();
    }
    else {
        Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
    }

我认为这可以帮助您通过此代码段使您的应用在所有屏幕分辨率中看起来相似,您可以根据各自的屏幕尺寸以编程方式缩放控件。

谢谢:)