android - AppWidget 在模拟器和手机上看起来不同 - 移动查看内容

标签 android android-layout android-xml

Layout 在手机上看起来和预期的一样,在模拟器上看起来不一样。我正在使用 SDK API 10 (Android 2.3)。测试手机是装有 Android 2.3.3 (Cyanogen Mod 7) 的 Motorola Milestone。

SDK 布局预览像 Emulator 一样呈现预览。

下图显示了右侧的预期呈现(由手机呈现)和左侧的意外呈现(SDK API 10、模拟器和预览)。

shifted View

造成差异的原因是什么,我该如何解决?删除边距和填充(通过在 TextView1 将其设置为 0dp)没有帮助。

主布局(父级)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/test_bg_red" 
      android:padding="20dp"
>

    <include
        android:layout_width="fill_parent"
        android:layout_height="26dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        layout="@layout/test_child" />
/>

     <include
        android:layout_width="fill_parent"
        android:layout_height="26dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        layout="@layout/test_child" />

</RelativeLayout>

子布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="26dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="4dp"
        android:gravity="top"
        android:includeFontPadding="false"
        android:text="42"
        android:textSize="32dp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_toRightOf="@+id/textView1"
        android:includeFontPadding="false"
        android:text="TextView2"
        android:textSize="12dp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignParentTop="true"
        android:includeFontPadding="false"
        android:text="TextView3"
        android:textSize="10dp" />

</RelativeLayout>

最佳答案

我认为这是由具有不同纵横比的不同屏幕造成的。由于无论物理屏幕尺寸如何,手机都有 4x4 个单元格,因此每个单元格必须更宽或更窄才能连续放置 4 个。使用 DP 会处理密度,但或多或​​少呈正方形的屏幕仍将要求单元格或多或少呈正方形。这意味着每个单元格的 DP 数量会有所不同,并导致您的 View 在不同设备上看起来不一样。

我找到的唯一解决方案是让您的布局尽可能灵活。

关于android - AppWidget 在模拟器和手机上看起来不同 - 移动查看内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417410/

相关文章:

android - 如何从不同尺寸的图像生成统一尺寸的圆形位图

android - 如何与信标保持距离

android - Fragment NullPointerException,从 Activity 更改 fragment textView 的文本

android - 以编程方式更改 ScrollView 的颜色

android - android解析xml报空指针异常

android - 具有纯色背景和顶部+底部内部阴影的 View

android - Android 版 PocketSphinx 与谷歌语音识别冲突

java - 请求历史结果时 Google fit 集成 UI 线程错误

java - 日期选择器外观损坏

android - 布局看起来不同?