4

私は電卓に取り組んでいます。ランドスケープでは、ボタンを追加しているので、余分なボタンに合わせて各ボタンが少し小さくなります。

この時点では、小さなフォント サイズを使用しているので、横向きモードでは小さいボタンに収まりますが、縦向きでは横向きよりも大きなテキストを表示したいと考えています。

画面の向きに応じて異なるテーマを使用する簡単な方法を見つけようとしましたが、簡単な方法が見つかりませんでした. テーマはアプリの再起動時にのみ適用されるため、ランドスケープ スタイル用に別のフォルダーを作成/values-land/style.xmlしても機能しません。

画面の向きに応じて異なるフォント サイズ/テーマを使用するにはどうすればよいですか?

4

1 に答える 1

11

縦向きと横向きの両方のフォント サイズを定義するディレクトリを使用することをお勧めします。例えば:

values/dimen.xml
values-land/dimen.xml

各 dimen.xml ファイルで、ボタンのフォント サイズを定義します。

values/dimen.xml:
    <dimen name="button_fontSize">12sp</dimen>

values-land/dimen.xml
    <dimen name="button_fontSize">24sp</dimen>

アクティビティが起動されるか、デバイスが回転されると、xml レイアウトは現在の向きに適したフォント サイズを取得します。

編集:電卓の表示をキャプチャするために を使用したことに応じて、android:configChanges実装が簡単でコーディングを簡素化できる代替手段を提供したいと思います。

以下の例では、計算画面がTextView名前付きのcalcDisplay.

protected void onSaveInstanceState(Bundle outState) {
    // Save the calculator display text.
    outState.putString("displayText", calcDisplay.getText());
}

protected void onCreate(Bundle savedInstanceState) {

    // ...

    // Restore the calculator display text.
    if (savedInstanceState != null) {
        String displayText = savedInstanceState.getString("displayText");
        calcDisplay.setText(displayText);
    }
}

このコードを使用すると、デバイスは回転時に計算機の表示テキストを自動的に復元するだけでなく、アクティビティが破棄されて再作成されるため、必要なフォント サイズも読み込まれます。

于 2013-02-03T04:31:29.877 に答える