0

我的应用程序快完成了,我遇到了一个巨大的错误。正如标题所说;我刚刚在 Galaxy Nexus 上测试了我的应用程序。比我迄今为止测试我的应用程序的屏幕更大。欲望高清。该应用在 DesireHD 上看起来不错,但在 GNexus 上却很糟糕。

这就是我的意思:Desire HD screenshotGNexus screenshot

我已经为每个文件夹 -hdpi -xhdpi 等创建了图像。我按照开发指南中的 3:4:6:8 比例正确创建它们。它肯定是从 xhdpi 获取图像。我可以这么说,因为关于我们和反馈 ImageViews 改变了设计。

一切都有一个 ImageView,我应该提一下。我不知道为什么他们没有正确显示。我尝试在 layout-xlarge 中创建 main.xml,然后在 layout-sw360dp 中创建,但都没有解决问题。事情看起来真的很不合适。考虑到它正在拾取 xhdpi 图像,我不知道为什么它们不能正确缩放。如果需要,我会发布我的 XML。我已经回到只有一个 res-layout 文件夹,因为它似乎没有任何区别。

不妨现在添加我的 XML:我们开始吧,http ://pastebin.com/PkzSDxxw - 我已经用上面的屏幕截图对其进行了颜色编码。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:fillViewport="true"
   android:background="@color/mainback">

    <!-- Title contains application info and content starts immediately below. -->

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content">
    <!-- red -->
    <ImageView
       android:id="@+id/ColourTitle"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:src="@drawable/main_colourtitle"
       android:contentDescription="@string/ContentDescColourTitle"/>
    <!-- blue -->          
    <ImageView
       android:id="@+id/PastSeason"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       android:layout_below="@id/ColourTitle"
       android:contentDescription="@string/ContentDescHistory"
       android:layout_marginBottom="12dp"
       android:layout_marginTop="12dp"
       android:onClick="PastSeason"
       android:src="@drawable/main_history"/>
    <!-- green first row -->
                                <LinearLayout
                                    android:id="@+id/DriveCurrent"
                                    android:layout_height="wrap_content"
                                    android:layout_width="match_parent"
                                    android:layout_below="@id/PastSeason"
                                    android:gravity="center"
                                    android:layout_marginTop="7dp">

                                        <ImageView
                                                android:id="@+id/Drivers"
                                                android:layout_height="wrap_content"
                                                android:layout_width="wrap_content"
                                                android:onClick="F1Drivers"
                                                android:src="@drawable/main_driver"
                                                android:contentDescription="@string/ContentDescDriver"
                                                android:layout_marginRight="30dp"/>

                                        <ImageView
                                                android:id="@+id/CurrentF1"
                                                android:layout_height="wrap_content"
                                                android:layout_width="wrap_content"
                                                android:onClick="CurrentSeason"
                                                android:src="@drawable/main_currentseason"
                                                android:contentDescription="@string/ContentDescCurrentF1"
                                                android:layout_marginLeft="15dp"/>

                                </LinearLayout>  
   <!-- green 2nd line -->
                                <LinearLayout
                                    android:layout_below="@id/DriveCurrent"
                                    android:layout_height="wrap_content"
                                    android:layout_width="match_parent"
                                    android:gravity="center"
                                    android:layout_marginTop="10dp"
                                    android:id="@+id/TeamDriverRecord">

                                            <ImageView
                                                android:layout_height="wrap_content"
                                                android:layout_width="wrap_content"
                                                android:src="@drawable/main_driver_record"
                                                android:contentDescription="@string/ContentDescDriverRecord"
                                                android:layout_marginRight="30dp"
                                                android:onClick="DriverRecord"/>

                                            <ImageView
                                                android:id="@+id/teamrecord"
                                                android:layout_height="wrap_content"
                                                android:layout_width="wrap_content"
                                                android:src="@drawable/main_team_record"
                                                android:contentDescription="@string/ContentDescTeamRecord"
                                                android:layout_marginLeft="15dp"
                                                android:onClick="TeamRecord"/>

                                </LinearLayout>

        <!-- faq aboutus feedback -->                  
                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_alignParentBottom="true"
                                    android:layout_below="@id/TeamDriverRecord">       

                                        <ImageView
                                                android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:src="@drawable/main_faq"
                                        android:contentDescription="@string/ContentDescFAQ"
                                        android:onClick="FAQPage">
                                        </ImageView>

                                        <ImageView
                                                android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:src="@drawable/main_feedback"
                                        android:contentDescription="@string/ContentDescFeedback"
                                        android:onClick="FeedbackPage">
                                        </ImageView>

                                        <ImageView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:contentDescription="@string/ContentDescAboutUs"
                                            android:src="@drawable/main_aboutus"
                                            android:onClick="AboutUs">
                                        </ImageView>                               
                                </LinearLayout>

</RelativeLayout>

</ScrollView>

我真的可以得到一些帮助,这让我发疯,我以为我已经涵盖了所有内容。:( 谢谢。

编辑:在 Eclipse 中,当在 XML 编码旁边的“图形布局”选项卡中选择不同的屏幕尺寸时,它不会正确缩放任何大于 4 英寸的屏幕的图像。如果我选择 Nexus S 则显示它可以正常缩放。下一个是 GNexus,然后你会遇到同样的问题。ImageViews 不会按比例放大以满足更大的屏幕尺寸。

4

1 回答 1

0

有时,RelativeLayouts 可能很难使用,有时它可能像反转操作一样微妙(例如,B 上方的 A 并不总是与 A 下方的 B 相同)。我推荐以下内容:

为每个孩子设置以下属性(红色、蓝色和三个 LinearLayout)

android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"

为了让它们放大以填满屏幕。

对于每个绿色的 ImageView,android:gravity="center"为了让每个绿色方块都位于其可用空间的中间 - 这应该确保尽可能一致的间距。

在绿色的第 2 行 LinearLayout 中,放入

android:layout_above="@+id/TeamDriverRecord"

并从常见问题解答/关于我们/反馈行中删除以下内容

android:layout_below="@id/TeamDriverRecord"

这样做的原因是它首先布置绿色的第二行,然后将常见问题解答/其他内容行放在其下方的所有空间中,在此过程中覆盖 height=wrap_content - 这就是为什么该行在更大的屏幕上显得更高而不是正确捕捉到底部。您还可以通过添加android:layout_alignParentBottom="true"到 FAQ LinearLayout 的每个子项来解决这个问题。

于 2012-10-16T15:50:25.507 回答