我开发了一款运行良好的Android应用程序,但问题是当我在小屏幕手机上运行我的应用程序时,一些组件会从屏幕上移除。那么请告诉我应该如何处理我的应用程序,以便它适合每个屏幕?
我应该创建所有这些文件夹(如下所示)并在每个文件夹中复制粘贴我应用程序的所有布局文件吗?或者我需要为每个文件夹设计不同的布局文件?
我是android的新手,请举一个简单的例子来帮忙。
文件夹:
res/layout/my_layout.xml
res/layout-small/my_layout.xml
res/layout-large/my_layout.xml
res/layout-xlarge/my_layout.xml
res/layout-xlarge-land/my_layout.xml
res/drawable-mdpi/my_icon.png
res/drawable-hdpi/my_icon.png
res/drawable-xhdpi/my_icon.png
我的代码的MainActivity的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.appdeveloper.appname.MainActivity"
android:background="#ff003b"
android:focusableInTouchMode="true">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/appLogoImage_id"
android:src="@drawable/applogo"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="1000dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="50dp"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/loginPassword_id"
android:textAlignment="center"
android:hint="Enter Application Password"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:layout_below="@+id/appLogoImage_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="50dp"
android:background="@android:color/transparent"
android:visibility="visible"
android:textCursorDrawable="@drawable/white_cursor" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="REGISTRATION"
android:id="@+id/regTitle_id"
android:layout_below="@+id/appLogoImage_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textColor="#ffffff"
android:textAlignment="center"
android:layout_marginTop="50dp"
android:visibility="invisible"
android:textStyle="bold" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions|text"
android:ems="10"
android:id="@+id/regName_id"
android:layout_below="@+id/loginPassword_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Your Good Name"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_marginTop="0dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regPassword_id"
android:layout_below="@+id/regName_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Application Password"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regVerifyPass_id"
android:layout_below="@+id/regPassword_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Verify Password"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regRingCode_id"
android:hint="Ringing Codeword"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regVerifyPass_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regLocationCode_id"
android:hint="Location Codeword"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/regRingCode_id"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/regNum1_id"
android:hint="1st Trusted Number"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regLocationCode_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible"
android:phoneNumber="false" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/regNum2_id"
android:hint="2nd Trusted Number"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regNum1_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible"
android:phoneNumber="false" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/regNum3_id"
android:hint="3rd Trusted Number"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regNum2_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible"
android:phoneNumber="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register"
android:id="@+id/regButton_id"
android:layout_below="@+id/regNum3_id"
android:layout_marginTop="15dp"
android:layout_alignLeft="@+id/appLogoImage_id"
android:layout_alignStart="@+id/appLogoImage_id"
android:layout_alignRight="@+id/appLogoImage_id"
android:layout_alignEnd="@+id/appLogoImage_id"
android:visibility="invisible" />
</RelativeLayout>
答案 0 :(得分:0)
除非您在dimen.xml文件中对您的尺寸(边距,填充,文本大小)进行软编码,否则您的应用将在具有不同ppi(每英寸像素数)的手机中具有不同的布局。
因此,在Dimens.xml中添加所有边距,特别是具有1000dp的边距。
原因:Android通过遍历dimens.xml文件自行处理所有情况(hdpi,mdpi,xhdpi,....),在您的情况下,您正专注于XMl布局编辑器中的预览屏幕固定的ppi并忽略具有不同ppi的其他屏幕的情况。
您的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.appdeveloper.appname.MainActivity"
android:background="#ff003b"
android:focusableInTouchMode="true">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/appLogoImage_id"
android:src="@drawable/applogo"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_0" />
<EditText
android:layout_width="wrap_content"
android:layout_height="@dimen/margin_50"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/loginPassword_id"
android:textAlignment="center"
android:hint="Enter Application Password"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:layout_below="@+id/appLogoImage_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/margin_50"
android:background="@android:color/transparent"
android:visibility="visible"
android:textCursorDrawable="@drawable/white_cursor" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="REGISTRATION"
android:id="@+id/regTitle_id"
android:layout_below="@+id/appLogoImage_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:textColor="#ffffff"
android:textAlignment="center"
android:layout_marginTop="@dimen/margin_50"
android:visibility="invisible"
android:textStyle="bold" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions|text"
android:ems="10"
android:id="@+id/regName_id"
android:layout_below="@+id/loginPassword_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Your Good Name"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_marginTop="@dimen/margin_0"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regPassword_id"
android:layout_below="@+id/regName_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Application Password"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regVerifyPass_id"
android:layout_below="@+id/regPassword_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:hint="Verify Password"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regRingCode_id"
android:hint="Ringing Codeword"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regVerifyPass_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/regLocationCode_id"
android:hint="Location Codeword"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/regRingCode_id"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/regNum1_id"
android:hint="1st Trusted Number"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regLocationCode_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible"
android:phoneNumber="false" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/regNum2_id"
android:hint="2nd Trusted Number"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regNum1_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible"
android:phoneNumber="false" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/regNum3_id"
android:hint="3rd Trusted Number"
android:textAlignment="center"
android:textColor="#ffffff"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:layout_below="@+id/regNum2_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/margin_10"
android:textCursorDrawable="@drawable/white_cursor"
android:visibility="invisible"
android:phoneNumber="false" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register"
android:id="@+id/regButton_id"
android:layout_below="@+id/regNum3_id"
android:layout_marginTop="@dimen/margin_15"
android:layout_alignLeft="@+id/appLogoImage_id"
android:layout_alignStart="@+id/appLogoImage_id"
android:layout_alignRight="@+id/appLogoImage_id"
android:layout_alignEnd="@+id/appLogoImage_id"
android:visibility="invisible" />
</RelativeLayout>
res / values中的dimens.xml
<resources>
<dimen name="margin_10">10dp</dimen>
<dimen name="margin_0">0dp</dimen>
<dimen name="margin_15">15dp</dimen>
<dimen name="margin_30">30dp</dimen>
<dimen name="margin_50">50dp</dimen>
<dimen name="margin_20">20dp</dimen>
</resources>