在Android中支持多个屏幕的问题?

时间:2010-10-18 09:51:43

标签: android

海友,             我开发了一个应用程序,它组成列表视图并在我的htc设备中发布.apk文件,设计和对齐一切正常,但问题当我在各种设备测试时,如Morotolo Droid,Nexus Devices的对齐方式Listviews出错了,所以我打算将Layout文件夹用作layout-hdpi,layout-ldpi和layout-mdpi,因为我将清单文件更改为

<supports-screens android:largeScreens="true" 
        android:normalScreens="true" android:smallScreens="true"
        android:anyDensity="true" /> 

是不是把android:anyDensity =“true”,我也使用dp而不是dip。我浏览了这个网址,但仍然无法明确这个想法 http://developer.android.com/guide/practices/screens_support.html。所以朋友们请告诉我(帮帮我)明白这个想法并告诉我我做了什么错误。这是我的主页xml代码frnds。

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/background_retinav2">   

     <LinearLayout android:layout_gravity="center" android:foregroundGravity="bottom" android:background="@color/white" android:id="@+id/rl_1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal">
        <ImageView  android:paddingTop="3dp" android:id="@+id/starthideimage" android:layout_width="30dp" android:layout_height="35dp" android:src="@drawable/newback" />
        <HorizontalScrollView  android:paddingTop="8dp" android:id="@+id/gv"
        android:layout_width="wrap_content" android:layout_marginTop="0dp"
        android:layout_height="wrap_content" android:background="#ffffff"
        android:scrollbars="none" android:layout_weight="1" android:foregroundGravity="bottom">
        <LinearLayout android:id="@+id/san_tag" android:layout_width="wrap_content" android:layout_height="wrap_content">
        </LinearLayout>
    </HorizontalScrollView>
    <ImageView  android:paddingTop="3dp" android:id="@+id/Endhideimage" android:layout_width="30dp" android:layout_height="35dp" android:src="@drawable/newforward" />
    </LinearLayout>

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:id="@android:id/tabcontent"  
        android:layout_width="fill_parent"  android:layout_height="fill_parent">



         <ListView android:id="@+id/content_movies" android:cacheColorHint="@color/cachecolor" 
           android:layout_weight="1" android:scrollbars="vertical"
           android:layout_width="fill_parent" android:layout_height="420dp"/>

        </FrameLayout>   
 </LinearLayout>

<TabWidget
    android:id="@android:id/tabs"
    android:gravity="bottom"
    android:layout_gravity="bottom"
    android:listSelector="@color/gray"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" /> 

</TabHost>

2 个答案:

答案 0 :(得分:0)

是的,Android确实可以更好地使用单独的文件夹名称模式,因此可以在其中进行布局的XML样式表,尽管它会使加载时间稍长,而不是使用动态链接的单个XML或直接代码模块从旧的动态更新获取屏幕规格的Linux方法 但是,如果您可以确定您遇到问题的设备是否具有光滑的屏幕尺寸报告过程,因为某些设备隐藏系统触摸按钮和/或带有时钟的条形图,WiFi图标,数据网络类型图标等在某种程度上隐藏例如1024x600的许多程序可能会报告为1024x552或976x600,因为48像素状态栏对于获取屏幕高度和宽度命令是隐藏的,因为antutu使用该方法 因此,在一些heirachy系统中它看到1024x600然后突然实际空间是976x600或1024x552。对于1280x800显示器,这可以是1216x800或1280x736,因为64pixel状态栏未一致地包含在屏幕尺寸报告中。这只是一个建议,不一定是你的问题的补救措施,正如前面所说,如果问题是图形不是由于帧格式化,这取决于您的应用程序如何设计以显示列表数据,即截取屏幕将会有所帮助。列表数据是带有填充参数的直接列表视图还是首先包含在方便的框架中

答案 1 :(得分:-1)

您应该在运行时获得设备的宽度和高度

Display display = getWindowManager().getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();

然后相应地制作你的布局

如果您可以以编程方式编写布局而不是使用xml

这是最好的做法