2

Activityのルート レイアウトに背景があるとします。画面に対して常に同じ場所にとどまるいくつかのボタンを画面に配置したいと思います。どうすればそれを達成できますか?

dpandを使用してみspましたが、別の画面でレイアウトをテストすると、すべてバラバラになります。(したがって、WVGAで問題がなければ、 QVGAでは動作しません。何か間違っていますか?

これは私のレイアウトxmlです:

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/menu_activity_bg" >
        <Button
            android:id="@+id/continueButton"
            android:layout_width="110sp"
            android:layout_height="30sp"
            android:layout_marginLeft="100sp"
            android:layout_marginTop="180sp"
            android:background="@drawable/menu_activity_continue" />
        <Button
            android:id="@+id/newGameButton"
            android:layout_width="130sp"
            android:layout_height="35dp"
            android:layout_marginLeft="90sp"
            android:layout_marginTop="220sp"
            android:background="@drawable/menu_activity_new_game" />
            <!-- ... -->
    </RelativeLayout>
4

2 に答える 2

1

これに対する私の解決策は、values-large、values-small、values-normal、values-xlarge フォルダーに配置する多数のスタイル タイプを用意することです。典型的なエントリは次のようになります。

<resources>
<style name="bigText">
    <item name="android:textSize">60dp</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_marginTop">5dp</item>
    <item name="android:layout_marginBottom">5dp</item>
    <item name="android:textColor">#000000</item>
</style>
</resources>

次に、私のレイアウト XML は次のようになります。

<TextView
    android:id="@+id/somTextValue"
    style="@style/bigText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/someText" />

これらのスタイルがいくつかあるので、スケーリングが必要なオブジェクトにそれらを適用します。試行錯誤により、すべての画面サイズでうまく機能するものを見つけることができます.

于 2012-12-03T11:54:55.870 に答える
0

私はお互いに2つのアプローチを持っています:

  1. ビューにレイアウトの重みを使用して、それに応じてスペースを取るようにします

  2. これを使用するとDisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int height = metrics.heightPixels; int wwidth = metrics.widthPixels; 、画面の幅と高さが得られ、作成中にパーセンテージで測定値が得られます。たとえば、幅の 20% です。UI を動的に作成する場合に役立ちます。

于 2012-12-03T12:07:30.463 に答える