2

こんにちは、私はアンドロイドでアプリを開発していscreen-widthます。ランドスケープモードで塗りつぶす画像が必要なレイアウトがいくつかあります。その上、特定の場所にいくつかのボタンが必要です。

私はscrollview(画面の幅を埋めると画像が高さに収まらないため)、相対的なレイアウトを使用しました。

その相対的なレイアウトに、imageviewと ボタンを配置しました。画像は幅を埋め、高さのコンテンツをラップします。ボタンは、相対レイアウト内で左マージンと上マージンを設定することによって配置されます。

テストした電話ではすべてがうまく見えますが、別のデバイス (他の画面サイズと密度) でテストすると、すべてのボタンが間違った場所にあり、十分な大きさではありません。

すべての比率が同じになるように、これを変更するにはどうすればよいですか? ボタンは、画像と比較して、正確に同じ位置にある必要があり、同じサイズである必要があります。

私のコード:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/svCentralAmerica"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true" >

    <RelativeLayout
        android:id="@+id/rlCentralAmerica"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/ivCentralAmerica"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:adjustViewBounds="true"
            android:src="@drawable/mapcentralamerica" />

        <Button
            android:id="@+id/mexu"
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="33dp"
            android:background="@drawable/usa_y"
            android:onClick="onCountryClick"
            android:paddingTop="3dp"
            android:scaleType="fitCenter"
            android:tag="1;U"
            android:text="2"
            android:textColor="@color/Black"
            android:textSize="15sp"
            android:textStyle="bold" />

        <Button
            android:id="@+id/mexr"
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:layout_alignTop="@id/mexu"
            android:layout_marginLeft="4dp"
            android:layout_toRightOf="@id/mexu"
            android:background="@drawable/russia_n"
            android:onClick="onCountryClick"
            android:paddingTop="18dp"
            android:scaleType="fitCenter"
            android:tag="1;R"
            android:text="3"
            android:textColor="@color/Red"
            android:textSize="15sp"
            android:textStyle="bold" />

    </RelativeLayout>

</ScrollView>
4

2 に答える 2

0

私は実際にあなたが考えていることをしました。残念ながら、任意の画面サイズでの配置と正確な縦横比を正確に制御したい場合は、リソースをプログラムで配置する必要があります。xml を使用すると、かなり近くまで到達できますが、正確な位置制御はできません。初心者にとって、プログラムによる配置は退屈な場合があります。あちこちにいくつかのボタンを配置するだけなので、それほど面倒ではありません。

方法: 画面幅と画面高さをプログラムで取得します。次に、ボタンの縦横比を計算します。次に、画面の幅と高さに対するボタンの位置を計算します (これは % になります)。このすべての情報があれば、特定の向きの任意の画面サイズでボタンを必要な場所に正確に配置できるはずです. 他のすべてをxmlに配置し、ボタンのみをプログラムで実行することをお勧めします。向きを変更すると、すべてを再計算する必要があり、煩わしい場合があります。1 つの方向に固執し、後で複数の方向をサポートすることをお勧めします。

于 2013-01-30T15:58:00.150 に答える