0

私のアプリはほぼ完成しましたが、大きなバグに遭遇しました。タイトルが示すように; Galaxy Nexus でアプリをテストしました。これまでアプリをテストしてきたものよりも大きな画面。欲望 HD。このアプリは、DesireHD では問題ないように見えますが、GNexus では非常によくありません。

つまり、 Desire HD のスクリーンショットと GNexus のスクリーンショットです。

各フォルダー -hdpi -xhdpi などのイメージを作成しました。開発ガイドの 3:4:6:8 の比率に従って、正しく作成しました。それは間違いなく xhdpi から画像を取得しています。これは、aboutus と feedback の ImageView のデザインが変更されているため、わかります。

そこにあるものはすべて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 コーディングの横にある [Graphically Layout] タブでさまざまな画面サイズを選択すると、4 インチより大きい画面では画像が適切にスケーリングされません。Nexus S を選択すると、正常にスケーリングされます。次は GNexus で、それ以降は同じ問題が発生します。ImageViews は、より大きな画面サイズに合わせて拡大しません。

4

1 に答える 1

0

RelativeLayouts は、操作が難しい場合があり、場合によっては操作を逆にするほど微妙な場合があります (たとえば、B の上の A は A の下の B と常に同じであるとは限りません)。次のことをお勧めします。

各子 (赤、青、および 3 つの LinearLayouts) に次のプロパティを設定します。

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

それらを拡大して画面いっぱいに表示するためです。

緑色の ImageView ごとに、android:gravity="center"それぞれの緑色の正方形が使用可能なスペースの中央になるように配置します。これにより、可能な限り一貫した間隔が確保されます。

緑色の 2 行目の LinearLayout に、

android:layout_above="@+id/TeamDriverRecord"

FAQ/about us/feedback 行から以下を削除します

android:layout_below="@id/TeamDriverRecord"

この理由は、最初に緑色の 2 行目をレイアウトし、次に FAQ/その他の行をその下のすべてのスペースに配置し、プロセスで height=wrap_content をオーバーライドしているためです。そのため、その行は大きな画面でより高く表示されます。適切に底にスナップする代わりに。android:layout_alignParentBottom="true"FAQ LinearLayout の各子に追加することで、それに対処することもできます。

于 2012-10-16T15:50:25.507 に答える