Android tvdpi vs xhdpi屏幕问题

时间:2013-04-16 04:17:00

标签: android android-emulator android-screen-support

我正在为平板电脑开发一款应用程序,直到最近才在Nexus 7(7.27'',800x1280:tvdpi)的模拟器中进行了测试。一切都很好,直到我决定在不同的模拟器中测试应用程序,其中一个创建类似于三星galaxy note 2(5.6'',720x1280:xhdpi)并且看起来不太好。

例如,看看我正在使用的这个自定义警报对话框。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/dialog_layout_root"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:padding="10dp"
          android:background="@color/light_gray">
         <Button
             android:id="@+id/facebook_login_button"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="40dp"/>
         <TextView
             android:id="@+id/or_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="20dp"
             android:textSize="20sp"
             android:textColor="@color/black"
             android:layout_below="@id/facebook_login_button"/>
         <TextView
             android:id="@+id/sign_in_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:layout_marginLeft="10dp"
             android:layout_marginTop="20dp"
             android:textSize="20sp"
             android:textColor="@color/gray"
             android:layout_below="@id/or_text"/>
         <EditText
             android:id="@+id/login_email"
             android:layout_width="320dp"
             android:layout_height="wrap_content"
             android:layout_marginLeft="10dp"
             android:layout_below="@id/sign_in_text"
             android:hint="@string/email_login"
             android:inputType="textEmailAddress"/>
         <EditText
             android:id="@+id/login_password"
             android:layout_width="320dp"
             android:layout_height="wrap_content"
             android:layout_marginLeft="10dp"
             android:layout_below="@id/login_email"
             android:hint="@string/pass_login"
             android:inputType="textPassword"/>
         <TextView
             android:id="@+id/case_sensitive_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:layout_marginLeft="10dp"
             android:layout_marginTop="20dp"
             android:textSize="18sp"
             android:textColor="@color/gray"
             android:layout_below="@id/login_password"/>
         <CheckBox
             android:id="@+id/remember_login"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textColor="@color/black"
             android:layout_below="@id/case_sensitive_text"/>
         <Button
             android:id="@+id/sign_in_button"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_below="@id/remember_login"
             android:layout_marginLeft="300dp"/>
         <TextView
             android:id="@+id/forget_password_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:layout_marginLeft="180dp"
             android:textSize="18sp"
             android:textColor="@color/black"
             android:layout_below="@id/sign_in_button"/>
         <View
            android:id="@+id/horizontal_line"
            android:layout_width="360dp"
            android:layout_marginTop="20dp"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray"
            android:layout_below="@id/forget_password_text"/>
         <TextView
             android:id="@+id/new_app_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:textSize="18sp"
             android:textColor="@color/black"
             android:layout_below="@id/horizontal_line"/>
         <TextView
             android:id="@+id/create_account_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:textSize="18sp"
             android:textColor="@color/gray"
             android:layout_below="@id/new_app_text"/>
         <Button 
             android:id="@+id/create_account_button"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_below="@id/create_account_text"
             android:layout_marginLeft="250dp"
             android:layout_marginTop="10dp"/>
         <TextView
             android:id="@+id/terms_conditions_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:textSize="12sp"
             android:textColor="@color/gray"
             android:layout_below="@id/create_account_button"/>
         <TextView
             android:id="@+id/vertical_rule"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:textSize="12sp"
             android:textColor="@color/gray"
             android:layout_below="@id/create_account_button"
             android:layout_toRightOf="@id/terms_conditions_text"/>
         <TextView
             android:id="@+id/privacy_policy_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:textIsSelectable="true"
             android:textSize="12sp"
             android:textColor="@color/gray"
             android:layout_below="@id/create_account_button"
             android:layout_toRightOf="@id/vertical_rule"/>             
</RelativeLayout>

正如你所看到的,我正在使用相对布局,我使用dp无处不在,sp用于字体大小。 如果您注意到警报对话框的背景,甚至片段显示都不正确。 你可以看看这里:http://imageshack.us/g/692/tvdpi.jpg/

有什么建议为什么会发生这种情况?

提前致谢。

1 个答案:

答案 0 :(得分:6)

如果使用eclipse,您可以为tvdpi图像创建不同的Drawable文件夹,例如drawable-tvdpi和drawable-xhdpi。 根据密度保持不同的图像。

注意还要为Nexus7和三星galaxy note创建不同的布局文件夹。

示例layout-sw600dp用于nexus-7和layout-sw360dpi用于Galaxy nexus。

将布局文件保存在两个文件夹中。

这将有效:)