我正在为应用程序创建布局,但问题是布局在所有大型设备上都是完美的,但不适用于hdpi。因此,我认为要为布局分别创建hdpi文件夹。我选择android资源目录,并选择密度作为hdpi,但不适用于仅hdpi设备。我也尝试过尺寸和屏幕宽度,但不起作用。您能帮我改善一下吗?
布局代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/combine_bg"
android:layout_marginTop="@dimen/dp20"
android:layout_marginBottom="@dimen/dp20"
android:layout_marginRight="@dimen/dp20">
<TextView
android:id="@+id/txtWelcomeTo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_to"
android:layout_marginTop="@dimen/dp170"
android:layout_marginLeft="@dimen/dp10"
android:textSize="@dimen/dp15"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/txtPrivateCare"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/the_private_care_masters"
android:layout_marginLeft="@dimen/dp10"
android:textStyle="bold"
android:textColor="@android:color/black"
android:layout_below="@id/txtWelcomeTo" />
<EditText
android:id="@+id/etemail"
android:layout_width="@dimen/dp190"
android:layout_height="wrap_content"
android:layout_below="@id/txtPrivateCare"
android:layout_marginLeft="@dimen/dp10"
android:hint="@string/email_phone"
android:layout_marginTop="@dimen/dp20" />
<EditText
android:id="@+id/etPassword"
android:layout_width="@dimen/dp190"
android:layout_height="wrap_content"
android:layout_below="@id/etemail"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginTop="@dimen/dp10"
android:hint="@string/password"
/>
<ImageButton
android:id="@+id/loginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_btn"
android:background="@android:color/transparent"
android:layout_below="@id/etemail"
android:layout_marginLeft="@dimen/dp25"
android:layout_toRightOf="@id/etemail" />
<CheckBox
android:id="@+id/chkRememberMe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/etPassword"
android:layout_marginLeft="@dimen/dp10"
android:layout_marginTop="@dimen/dp10"
android:text="@string/remember_me"
android:textSize="@dimen/dp12"
/>
<TextView
android:id="@+id/txtForgotPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/chkRememberMe"
android:text="@string/forgot_pwd"
android:layout_below="@id/etPassword"
android:layout_marginTop="@dimen/dp17"
android:textSize="@dimen/dp12"
android:layout_marginLeft="@dimen/dp15"
/>
<TextView
android:id="@+id/txtSignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/not_have_account"
android:layout_below="@id/txtForgotPwd"
android:layout_marginTop="@dimen/dp30"
android:textSize="@dimen/dp12"
android:layout_marginLeft="@dimen/dp15"
/>
</RelativeLayout>
</RelativeLayout>
我要创建的.psd屏幕截图
以及在hdpi设备上的地雷布局:
我该如何解决问题,请帮忙
dimens.xml
<dimen name="dp1">1dp</dimen>
<dimen name="dp2">2dp</dimen>
<dimen name="dp3">3dp</dimen>
<dimen name="dp4">4dp</dimen>
dimens.xml-大
<dimen name="dp1">1.5dp</dimen>
<dimen name="dp2">3.0dp</dimen>
<dimen name="dp3">4.5dp</dimen>
<dimen name="dp4">6.0dp</dimen>
dimes.xml-xlarge
<dimen name="dp1">2.0dp</dimen>
<dimen name="dp2">4.0dp</dimen>
<dimen name="dp3">6.0dp</dimen>
答案 0 :(得分:0)
您应该使用sp
而不是dp
来设置文本大小。
从文档中:
sp
与比例无关的像素-就像dp单位一样,但是它也通过用户的字体大小首选项进行缩放。建议您在指定字体大小时使用本机,以便针对屏幕密度和用户喜好进行调整。
答案 1 :(得分:0)