1

デバイスを回転させたときに繰り返しタイル モードで背景を維持するのに問題があります。デバイスを回転させると、背景が繰り返されるタイルから引き伸ばされた画像になります。

背景は描画可能な XML (bg.xml) です。この XML には、小さな PNG ファイルであるビットマップが含まれており、タイル モードが繰り返しに設定されています。

<?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/bgimg"
        android:tileMode="repeat" />

現在、フラグメントは特定のレイアウトをインフレートします。このレイアウトには ScrollView があります。この ScrollView には、上記の bg.xml ファイルに設定された背景があります。レイアウト ファイルは次のようになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainRoot"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="8dip"
        android:layout_marginRight="8dip"
        android:layout_weight="1"
        android:background="@drawable/bg" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            text views
            buttons
            etc

        </LinearLayout>
    </ScrollView>
    </LinearLayout>

フラグメントが最初に横向きまたは縦向きモードで表示された場合、背景画像は期待どおりにタイル表示されます。ただし、フラグメントが表示されている間にデバイスを回転させるとすぐに、背景画像が伸びてタイル表示されなくなります。

メインの LinearLayout (ScrollView ではなく) で同じ背景を使用するアクティビティ (フラグメントではない) があり、このアクティビティは正常に動作します。

背景画像を処理するコードはなく、XML ファイルだけです。

Eclipse でフラグメントをプレビューしてから回転すると、正常に動作します。

レイアウトファイルは「layout」フォルダにあります。「layout-land」のフォルダがありません。

私がテストしたデバイスは、Android 2.2 を搭載した Samsung Galaxy (GT-I9000) です (他のデバイスではまだテストしていません)。

4

0 に答える 0