web-dev-qa-db-ja.com

タブレットによる動的テキストサイズの変更

努力を重ねて、ついにAndroidでの最初のアプリの終わりに到達しました。そして、すべてに感謝します。しかし、終わりになってから、私のアプリのテキストサイズはすべてのタブレットサイズで共通であることに気づきました。だから私は私の質問を再構成します。

問題:アプリ全体で独自のカスタムテキストサイズを使用しました。そして7インチのタブレットに満足したものもあります。しかし、8.9インチと10.1インチのタブレットで同じものを探していると、多くの空白とテキストサイズが含まれているのも比較的小さいです。タブレットのサイズに応じてテキストサイズを変更する方法はありますか?初心者の質問に見えるかもしれませんが、7インチで見栄えのする同じアプリが、8.9インチと10.1インチでその本質を失っているため、私はこれに苦労しています。または、同じようにアプリでできることが他にあります。 考えられる解決策:-私のトピックが示すように、タブレットのサイズが変更されたときにテキストサイズを変更する方法があります。動的またはその他の方法で。

編集::Cheetaの回答によると、アプローチは正しいですが、レイアウトボタンとテキストフィールドごとにそれを行うことはできません。他のフィールド。単一のアプリには、このようなフィールドが何百もあります。ある場所でそれを実行して、それを必須属性と呼ぶことはできますか?カスタムタグは私が探しているアプローチですか?それは可能ですか????

どんな助けでもありがたいです。前もって感謝します。

[〜#〜] note [〜#〜]私は答えに到達していませんが、チーターの答えはやや正しい方法。彼の答えとの整合性の問題はほとんどありませんが、私は彼の答えを正しいとマークしています。他の答えはいつでも大歓迎です。 ありがとう

10
Android

私は同じ問題を抱えていましたが、_sp/db_はこの種の問題を処理するには効率的ではないことに気づき、アライメントとフォントサイズに関連するものをプログラムで処理しました。

これが私がこの問題をどのように処理したかというステップです。

  • デバイスの画面の幅と高さを計算する
  • Set TextView.setTextSize(unit, size)を使用します。ここで、unitパラメーターは_TypedValue.COMPLEX_UNIT_PX_で、sizeパラメーターは画面の全幅のパーセントです。通常、私にとっては、フォントの全幅の.5%が適切です。 0.4%や0.3%など、他の合計幅のパーセンテージを試してみることができます。

このようにして、フォントsizeは常にすべてのテキスト/画面サイズに適しています。

14
Yahya Arshad

いくつかのリソースを確認した後、最終的に次の解決策を思いつきました。layout-xml内で、ディメンション宣言を使用してボタンテキストのサイズを定義します。

Android:textSize="@dimen/campaign_textfontsize"

「/ values」サブディレクトリに対応する値を持つdimens.xmlを作成しました

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="campaign_textfontsize">18dp</dimen>
</resources>

次に、2番目のvalues-folder "/ values-sw720dp"を作成し、古いdimens.xmlをその中にコピーしました。このdimens.xmlで、fontsize値を調整しました。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="campaign_textfontsize">24dp</dimen>
</resources>

現在の画面サイズに基づいてAndroidは適切な寸法値を選択します。したがって、コードがなくても、フォントはディスプレイ(およびディスプレイ関連のボタン)サイズに適合します。

お役に立てれば...

32
Kai Altstaedt

テキストサイズを動的に変更する必要はありません。テキストサイズにspを使用すると、電話のように、画面の解像度に応じてテキストサイズが自動的に配置されます。

Android:textSize="10sp"

これはかなり古い質問ですが、別の最新のソリューションが非常に便利です。
サポートライブラリを使用すると、26以上の新しいテキストの自動サイズ設定を利用できます。
簡単に言うと、TextViewのサイズを定義すると、テキストのサイズはその範囲に合わせて自動的に増減します。

<TextView
    Android:layout_width="match_parent"
    Android:layout_height="200dp"
    app:autoSizeTextType="uniform"
    app:autoSizeMinTextSize="12sp"
    app:autoSizeMaxTextSize="100sp"
    app:autoSizeStepGranularity="2sp" />

詳細 TextViewsの自動化

ここに、ConstraintLayoutを使用して画面のパーセンテージでTextViewサイズを設定する機能を追加すると、どのデバイスでもほぼ同じように見えるレイアウトを作成できます。

0
Leo Droidcoder