14

レイアウトに関して非常に奇妙な問題があります。Eclipse XML エディターと Samsung Galaxy で設計されたように見えますが、古い携帯電話の xperia x10 mini ではめちゃくちゃです。これは他のデバイスでも発生すると想定することしかできません。

誰かがこれを修正するのを助けることができれば、私は感謝しています.

2 つのスクリーンショットと XML コードを次に示します。

EclipseレイアウトエディタとSamsung Galaxy S4 miniでどのように見えるか

ここに画像の説明を入力

Sony Xperia x10 miniでの外観

ここに画像の説明を入力

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_height="wrap_content" > 

    <FrameLayout
        android:layout_marginTop="7dp"
        android:layout_gravity="center" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <View  android:layout_marginTop="19dp"  android:layout_marginLeft="19dp"  android:layout_height="249dp" android:layout_width="2dp"    android:background="#B2CFEF"/>
        <View  android:layout_marginTop="19dp"  android:layout_marginLeft="189dp" android:layout_height="249dp" android:layout_width="2dp"    android:background="#B2CFEF"/>
        <View  android:layout_marginTop="18dp"  android:layout_marginLeft="20dp"  android:layout_height="2dp"   android:layout_width="170dp"  android:background="#B2CFEF"/>
        <View  android:layout_marginTop="267dp" android:layout_marginLeft="19dp"  android:layout_height="2dp"   android:layout_width="171dp"  android:background="#B2CFEF"/>

        <ImageView  style="@style/ta_img"  android:id="@+id/ta_lu"                                     android:layout_marginTop="52dp"   />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_lc"                                     android:layout_marginTop="124dp"  />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_ld"                                     android:layout_marginTop="197dp"  />

        <ImageView  style="@style/ta_img"  android:id="@+id/ta_ru"  android:layout_marginLeft="170dp"  android:layout_marginTop="52dp"   />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_rc"  android:layout_marginLeft="170dp"  android:layout_marginTop="124dp"  />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_rd"  android:layout_marginLeft="170dp"  android:layout_marginTop="197dp"  />

        <ImageView  style="@style/ta_img"  android:id="@+id/ta_tl"  android:layout_marginLeft="37dp"                                     />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_tc"  android:layout_marginLeft="84dp"                                     />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_tr"  android:layout_marginLeft="132dp"                                    /> 

        <ImageView  style="@style/ta_img"  android:id="@+id/ta_bl"  android:layout_marginLeft="37dp"   android:layout_marginTop="249dp"  />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_bc"  android:layout_marginLeft="84dp"   android:layout_marginTop="249dp"  />
        <ImageView  style="@style/ta_img"  android:id="@+id/ta_br"  android:layout_marginLeft="132dp"  android:layout_marginTop="249dp"  />

    </FrameLayout>

</LinearLayout>

これは ImageViews のスタイルです

<style name="ta_img" > 
        <item name="android:layout_width">40dp</item>
        <item name="android:layout_height">40dp</item>
        <item name="android:clickable">true</item>
        <item name="android:src">@drawable/ta</item>    
</style>

何か案は???

4

5 に答える 5

2

高い dp 値を使用すると、ほとんどの場合、小さな画面で歪みが発生します。これらのデバイスをサポートする場合は、次の 2 つの方法があります。

  1. デバイス用に別のレイアウトを作成し-smallます。
  2. layout_weightまたは で動作するようにレイアウトを変更しますRelativeLayout

私の意見では、両方を実行するのがベスト プラクティスですが、最初の方がより重要です。

于 2015-10-07T20:49:46.917 に答える
2

このライブラリを見ることができます。このライブラリは、さまざまな画面サイズに応じてビューをスケーリングするのに役立ちます。

編集:これがライブラリの仕組みです。

@dimen/_sdp使用している通常の代わりに単純に使用できdpます

例えば

 <View  android:layout_marginTop="@dimen/_15sdp"  android:layout_marginLeft="@dimen/_15sdp"  android:layout_height="@dimen/_200sdp" android:layout_width="@dimen/_2sdp"    android:background="#B2CFEF"/>

また、上記で使用した値は参考値であることに注意してください。どの値がニーズに合っているかを試して見つける必要があります。

于 2017-07-12T13:09:40.757 に答える
1

現在表示されている問題は、Xperia x10 の比較的小さい画面 (240x320px) が原因であると思われます。layout_marginToplayout_marginLeftを比較的高い値に設定しようとするとdp、実際には電話の幅/高さを超えて、表示されているレイアウトになる可能性があります。

よりスケーラブルなレイアウトを得るために、LinearLayout内で複数の を活用することをお勧めします。画面の 1 つの端に沿っRelativeLayoutて 4つの を配置でき、それらのレイアウト内に を配置できます。それぞれに同じを与えることで、 の長さに沿って均等に分布させることができます。LinearLayoutImageViewImageViewlayout_weightLinearLayout

于 2015-10-07T20:49:54.117 に答える