Supporting/Adjusting text size on different screen sizes in Android

If you are developing mobile applications specifically in Android then I am pretty sure that you have had difficulty in making your application content dynamic especially text size. しかし、いくつかの公式リソースでは、sp ユニット (例: android:textSize=”12sp”) で定義されたテキスト サイズをサポートする TextView の使用法について説明しています。

本日は、Android アプリケーションで動的なテキスト サイズを実現した方法について、私の経験を共有します。

  • values フォルダを右クリック
  • Select New
  • Values Resource File

  • それからファイル Dimen.xml を作成し、これをプロジェクトで実行する。xml

  • dimen.xml に次元リソースを定義してください
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textSizeTitle">@dimen/_22sdp</dimen>
</resources>

次元リソースを追加すると @dimen/_22sdp でエラーが発生しますが気にせず次のステップで修正しましょう。

meta.xml ファイルの作成:

このファイルは、アプリケーションが実行されている Android デバイスが所有している異なるバリアントまたは修飾子に対する参照として使用されます。

  • 新しい値リソース ファイルを再度作成する
  • 名前を meta.xre ファイルとする。 というダイアログが表示されますが、まだOKを押さないでください
  • 左側のリストから密度修飾子をクリックします

  • ここで>>といった大小記号付きのボタンを選択してください。 と表示されます。

  • Select Medium Density and press ok

Android Studio では異なる修飾子をサポートしていますが、先ほど使用したのは密度の1つです。

  • High Density
  • X-High Density
  • XX-High Density
  • XXX-High Density

次に別の meta.xml を作成し、以下の密度の修飾子をすべて追加してください。xml ファイルを作成し、今度は左側のサイズ修飾子を使用し、X-Large オプションを選択します。今度は別の meta.xml ファイルを作成します。 という修飾子をつけると、以下のように最小の幅をdpで定義するオプションが表示されます

そしてOKボタンをクリックしてください。

さらにmeta.Dataを作成します。xmlファイルを作成します。

  • 300
  • 330
  • 360
  • 390
  • … 780

ここで問題は、これらのファイルに何があるかですが、次のステップですべてのメタ ファイルに文字列リソースを追加することになります。

Android Studio の左ペインには、次のようなファイルがあります。

meta.xml (hdpi)

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="dimension">values-hdpi</string>
</resources>

すべての meta.xml ファイルと上記のリソースを開きますが、値-hdpi 値を values-{ここで各ファイルの修飾子を使用}で変更する必要があります。

  • meta.xml(hdpi)
  • meta.xml(mdpi)
  • meta.xml(xhdpi)
  • meta.xml(hdpi)
    • github でこれらのファイルを確認することができます。xml(xxhdpi)

    • meta.xml(xxxhdpi)
    • meta.xml(xlarge)
    • meta.xml(sw300dp)
    • meta.xml(sw330dp)
    • meta.xml(sw360dp)
    • meta.xml(sw420dp)
    • meta.xml(sw450dp)
    • meta.xml(sw480dp)
    • meta.xml(sw510dp)
    • meta.xml(sw390dp)
    • meta.xml(sw420dp)
    • meta.xml(sw450dp) meta.xml(sw510dp)

    • meta.xml(sw570dp)
    • meta.xml(sw600dp)
    • meta.xml(sw630dp)
    • meta.xml(sw660dp)
    • meta.xml(sw690dp)
    • meta.xml(SW440dp)
    • (sw540dp)

    • meta.xml (sw540dp)
    • meta.xml (sw510dp)
    • メータ.xml(sw720dp)
    • meta.xml(sw750dp)
    • meta.xml(sw780dp)

    まだ終わっていません。sdp.xml,このファイルに、meta.xml,以前に作ったすべての修飾子を使って作成する。sdp.xmlのすべての修飾子を使ってファイルを作成したら、githubにそれらのファイルの内容を見ることができます。 sdp

    • sdp.xml(hdpi)
    • sdp.xml(mdpi)
    • sdp.xml(xhdpi)
    • sdp.xml(xxhdpi)
    • sdp.xml(xhdpi)
    • sdp.xml(xdpi)
      • dpi(hdpi)
      • dpi.xml(mdpi)xml(xxxhdpi)
      • sdp.xml(xlarge)
      • sdp.xml(sw300dp)
      • sdp.xml(sw330dp)
      • sdp.xml(sw360dp)
      • sdp.xml(xxxhdpi)
      • sdp.xml(xxxhdpi) (xxxhdpi)
      • dp.xml (xxxhdpi)
      • sdp.xml(sw420dp)
      • sdp.xml(sw450dp)
      • sdp.xml(sw480dp)
      • sdp.xml(sw510dp)
      • <SW420GP)<3299><7049>Sdp.xml(sd420DP)><SW420GP><3299><7049>Sdp.xml(sw540dp)

      • sdp.xml(sw570dp)
      • sdp.xml(sw600dp)
      • sdp.xml(sw630dp)
      • sdp.xml(sw660dp)
      • sdp.xml(sw600dp)
      • dp.xml(sw440dp)
      • dp.xml(sw570dp)
      • dp.xml(sw460dp) #1xml(sw690dp)
      • sdp.xml(sw720dp)
      • sdp.xml(sw750dp)
      • sdp.xml(sw780dp)

      以上で設定は終了ですが、後は冒頭に紹介した Dimen.xml ファイルで既に定義した寸法値を使用するだけになりました。

      Usage

      Dimen 値を次のように定義した場合、レイアウト xml ファイルの任意の場所で使用できます:

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
<!-- // here is the dimen value that will support different screen size-->
android:textSize="@dimen/textSizeTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

画面サイズや密度の異なる複数のエミュレータでアプリを実行してみると、アプリケーションが実行されているデバイスに応じてテキストのサイズが調整されることがわかります。

以上です。

お読みいただきありがとうございます。 彼は常に新しい技術を探求し、それが何らかの形で役立つことを期待して皆さんと知識を共有しています。

親切に何度も拍手をしてください😇もしあなたが私の努力を好きなら👏🏼

コメントする