2

何週間も私を悩ませてきた問題は、すべてを試してみましたが、役に立ちませんでした.

私がやりたいことは、すべての画面サイズでまったく同じレイアウトにすることです。写真を使って説明しましょう:

2.7 インチ デバイスの場合: 2.7インチ

10.1 インチのデバイスの場合 (説明のために不適切にフォトショップ処理された画像): 10.1inch希望

しかし、現在の Android の実装では、10.1 インチのデバイスでこれを取得します。 10.1インチ

要するに、すべての画面サイズでボタンのサイズ、テキストのスケーリングなどを含め、アプリケーションを (相対的に言えば) 同じように見せたいと考えています。以前は View クラスをオーバーライドし、独自の View を作成して内部にすべてを描画することでこれを行っていましたが、その方法では、ビュー要素の追加が非常に高速になり、「onClick」コールバック機能を持つ利点も失われました (プログラムでオーバーライドされた View クラス内にビットマップを描画して、ボタンとして機能させます)。Android xml ファイルを使用してこれを達成する方法はありますか?

これが私の(テスト)XMLコードです:

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

    <Button
        android:id="@+id/button_1"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="ABCDEF" />
    <Button
        android:id="@+id/button_2"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="GHI" />
    <Button
        android:id="@+id/button_3"
        android:layout_height="fill_parent"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:text="JKLM" />
</LinearLayout>
4

1 に答える 1

1
if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {     
        Toast.makeText(this, "Large screen",Toast.LENGTH_LONG).show();

    }
    else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {     
        Toast.makeText(this, "Normal sized screen" , Toast.LENGTH_LONG).show();

    } 
    else if ((getResources().getConfiguration().screenLayout &      Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {     
        Toast.makeText(this, "Small sized screen" , Toast.LENGTH_LONG).show();
    }
    else {
        Toast.makeText(this, "Screen size is neither large, normal or small" , Toast.LENGTH_LONG).show();
    }

これは、それぞれの画面サイズに従ってプログラムでコントロールをスケーリングできるこのコード スニペットを使用して、すべての画面解像度でアプリを同じように見せるのに役立つと思います。

ありがとう :)

于 2012-07-24T20:23:20.340 に答える