如何在android中根据屏幕大小自动调整左边距和右边距大小

如何在android中根据屏幕大小自动调整左边距和右边距大小,android,android-layout,android-xml,Android,Android Layout,Android Xml,1> 在所有不同的屏幕尺寸下,我是如何看到这样的屏幕的? 2> 为此,我必须遵循哪些步骤 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_paren

1> 在所有不同的屏幕尺寸下,我是如何看到这样的屏幕的?
2> 为此,我必须遵循哪些步骤

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.sridhar.textviewautosize.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="240dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="36dp"
        android:layout_marginTop="25dp"
        android:autoSizeTextType="uniform"
        android:text="Hello World I am Checking AutoFill Text View is working or not for different screens" />

</LinearLayout>


请检查此代码,并告诉我如何根据小、中、大和xlarge的屏幕大小自动调整左边距和右边距属性的大小

您应该在不同的
文件夹中定义边距,如下所示:

如果您需要支持更大的屏幕大小,可以根据需要添加任意多的
sw
文件夹。您可以从下图计算
sw dp


->nexus 4:768/2=384dp,nexus 5:1080/3=360,像素2:1080*160/420=410dp。

您应该在不同的
文件夹中定义边距,如下所示:

如果您需要支持更大的屏幕大小,可以根据需要添加任意多的
sw
文件夹。您可以从下图计算
sw dp


->nexus 4:768/2=384dp,nexus 5:1080/3=360,像素2:1080*160/420=410dp。

您需要设置hdpi、xhdpi等。它将覆盖所有手机尺寸。在资源中设置dimensions.xml

例如: res/values hdpi/dimensions.xml,res/values xhdpi/dimensions.xml

<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">10dp</dimen>
<dimen name="activity_vertical_margin">20dp</dimen>

10dp
20dp

您需要设置hdpi、xhdpi等。它将覆盖所有手机尺寸。在资源中设置dimensions.xml

例如: res/values hdpi/dimensions.xml,res/values xhdpi/dimensions.xml

<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">10dp</dimen>
<dimen name="activity_vertical_margin">20dp</dimen>

10dp
20dp

使用此方法获取屏幕大小

public void get_screen_size(){

        int screenSize = getResources().getConfiguration().screenLayout &
                Configuration.SCREENLAYOUT_SIZE_MASK;


        switch(screenSize) {
            case Configuration.SCREENLAYOUT_SIZE_XLARGE:
                Toast.makeText(this, "Extra Large Screen", Toast.LENGTH_LONG).show();
                break;
            case Configuration.SCREENLAYOUT_SIZE_LARGE:
                Toast.makeText(this, "Large Screen", Toast.LENGTH_LONG).show();
                break;
            case Configuration.SCREENLAYOUT_SIZE_NORMAL:
                Toast.makeText(this, "Normal Screen", Toast.LENGTH_LONG).show();
                break;
            case Configuration.SCREENLAYOUT_SIZE_SMALL:
                Toast.makeText(this, "Small Screen", Toast.LENGTH_LONG).show();
                break;
            default:
                Toast.makeText(this, "Screen size is not xlarge, large, normal or small", Toast.LENGTH_LONG).show();
        }

    }
然后根据实际屏幕大小,以编程方式应用所需的边距

但是,我建议您避免同时使用边距,而是找到另一种解决方案,可能使用权重,这样它就可以在任何屏幕上工作

当然,最好的解决方案是按照安卓的建议来支持不同的屏幕尺寸,如下所示:


使用此方法获取屏幕大小

public void get_screen_size(){

        int screenSize = getResources().getConfiguration().screenLayout &
                Configuration.SCREENLAYOUT_SIZE_MASK;


        switch(screenSize) {
            case Configuration.SCREENLAYOUT_SIZE_XLARGE:
                Toast.makeText(this, "Extra Large Screen", Toast.LENGTH_LONG).show();
                break;
            case Configuration.SCREENLAYOUT_SIZE_LARGE:
                Toast.makeText(this, "Large Screen", Toast.LENGTH_LONG).show();
                break;
            case Configuration.SCREENLAYOUT_SIZE_NORMAL:
                Toast.makeText(this, "Normal Screen", Toast.LENGTH_LONG).show();
                break;
            case Configuration.SCREENLAYOUT_SIZE_SMALL:
                Toast.makeText(this, "Small Screen", Toast.LENGTH_LONG).show();
                break;
            default:
                Toast.makeText(this, "Screen size is not xlarge, large, normal or small", Toast.LENGTH_LONG).show();
        }

    }
然后根据实际屏幕大小,以编程方式应用所需的边距

但是,我建议您避免同时使用边距,而是找到另一种解决方案,可能使用权重,这样它就可以在任何屏幕上工作

当然,最好的解决方案是按照安卓的建议来支持不同的屏幕尺寸,如下所示:



您是否尝试过使用ConstraintLayout?如果我使用ConstraintLayout,是否可以支持不同的屏幕大小@霍克:你说的自动调整是什么意思?自动调整是指根据不同的屏幕大小和分辨率进行自动调整@dazza5000@ballu我不完全确定您想要什么,但在ConstraintLayout中,您可以指定边距,并在设计视图中以图形方式绘制“箭头”,以匹配其他元素的中心或边缘。然后,它根据任何大小的屏幕上给定的约束动态调整元素的大小。如果你认为这对你有帮助,我可以把它作为一个答案贴出来。尝试在这些网站上探索更多内容:您是否尝试过使用ConstraintLayout?如果我使用ConstraintLayout,是否可以支持不同的屏幕大小@霍克:你说的自动调整是什么意思?自动调整是指根据不同的屏幕大小和分辨率进行自动调整@dazza5000@ballu我不完全确定您想要什么,但在ConstraintLayout中,您可以指定边距,并在设计视图中以图形方式绘制“箭头”,以匹配其他元素的中心或边缘。然后,它根据任何大小的屏幕上给定的约束动态调整元素的大小。如果你认为这对你有帮助,我可以把它作为一个答案贴出来。尝试在这些网站上探索更多:是否有任何简单的程序像我们为不同屏幕大小的文本大小自动填充所遵循的一样?是否有任何简单的程序像我们为不同屏幕大小的文本大小自动填充所遵循的一样?我如何应用于xml文件?请澄清这一点?请告诉我@Nilesh patelinside resource folder,make folders name,示例:values hdpi,values xhdpi,values mdpi。生成名为dimens.xml的xml。。请刷新您的文本视图。我如何应用于xml文件请澄清这一点?请告诉我@Nilesh patelinside resource folder,make folders name,示例:values hdpi,values xhdpi,values mdpi。生成名为dimens.xml的xml。。对您的文本视图进行此刷新。