17

私はギャラクシータブ1、7インチhdpiとギャラクシータブプラス、7インチhdpiを使用していますが、解像度が高く、私のアプリケーションでは、テキストはギャラクシータブでうまく読むことができますが、ギャラクシータブプラスでは小さすぎます。フォントサイズとレイアウトでspを使用しています-大きい。何か案が?ありがとう

4

12 に答える 12

34

これは、プログラムでサイズを設定する場合に役立ちます。テキストは各デバイスで同じサイズで表示されます

TextView text = new TextView(this);
text.setText("text");
text.setTextSize(16 * getResources().getDisplayMetrics().density);
于 2012-09-27T11:40:50.203 に答える
19

ハードウェア仕様では、Galaxy Tab 1 は MDPI デバイスですが、Android 2.x を使用しているため、Samsung はプログラムで HDPI リソースを使用するように設定しています。したがって、次のようにすることをお勧めします。

  1. dimens.xmlディレクトリにファイルを作成しますvalues
  2. そこに置く<dimen name="font_size">30sp</dimen>。これはデフォルトのフォントサイズです。
  3. dimens.xmlディレクトリにファイルを作成しますvalues-large
  4. そこに置く<dimen name="font_size">20sp</dimen>。これはgalaxy tab 1のフォントサイズです。
  5. dimens.xmlディレクトリにファイルを作成しますvalues-sw600dp
  6. そこに置く<dimen name="font_size">30sp</dimen>。これは、Android 3.x 以降を搭載したその他のタブレットのフォント サイズです。
  7. レイアウトで指定android:textSize="@dimens/font_size"
于 2012-09-27T11:40:23.477 に答える
16

次のように、密度または画面サイズに関連するさまざまなフォルダーを作成するだけです

オプション1。

values-large
values-small
values-normal

詳細については、このリンクを確認してください...

複数画面のサポート

オプション 2。

mTextView.setTextSize(16 * getResources().getDisplayMetrics().density);

これにより、密度に応じてTextSizeが得られます。

于 2012-09-27T11:37:26.817 に答える
4

これを試して:

このような

android:textSize= "10sp"

sp

Scale-independent Pixels - これは dp 単位に似ていますが、ユーザーのフォント サイズ設定によってもスケーリングされます。フォントサイズを指定する場合は、このユニットを使用することをお勧めします。画面密度とユーザーの好みの両方に合わせて調整されます。

于 2012-09-27T11:38:14.520 に答える
4

(1)画面の密度に応じてdp(濃度ピクセル)が調整されるので、テキストには「sp」よりも「dp」や「dip」を使った方が良いと思います。そのため、テキストは高密度デバイスでは大きく表示され、低密度デバイスでは小さく表示されます。

(2) または、特にテキスト サイズに「sp」を使用する場合は、デバイスの密度を検出し、それに応じてテキストのサイズを設定できます。

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    switch(displayMetrics.densityDpi){ 
        case DisplayMetrics.DENSITY_LOW: 
            //set text-size for low-density devices.
            break; 
        case DisplayMetrics.DENSITY_MEDIUM: 
            //set text-size for medium-density devices.
            break; 
        case DisplayMetrics.DENSITY_HIGH: 
            //set text-size for high-density devices.
            break; 
    } 
于 2012-09-28T07:43:57.690 に答える
3

異なる値を使用することをお勧めします。ご覧ください -

Androidの異なる値フォルダー

詳しくはこちら

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

デバイスに依存しないピクセルの基礎

また

http://developer.android.com/guide/practices/screens_support.html

于 2012-09-27T11:36:52.417 に答える
2

以下のコードは、ユーザーのシステム フォント サイズ設定を使用して、textView のフォント サイズのスケーリングを調整します。

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int screenWidth = size.x;
float fontscale = getResources().getConfiguration().fontScale;
float textSize = (screenWidth/ fontscale)/10;
Log.e(TAG, "textSize is:  " + textSize);
yourTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP,  textSize);
于 2015-12-18T22:15:14.337 に答える
2

screen の物理的なサイズに基づいて販売されている、このサイズのいずれかを使用できます。すべてのデバイスのテキストは同じ物理サイズになります。

于 2012-09-27T11:35:44.603 に答える
1

TextView headerTextView(文字列ラベル){

    TextView headerTextView = new TextView(this.context);
    float scale = context.getResources().getDisplayMetrics().density;
    if(scale > 2.0) {
    headerTextView.setWidth(210);
    headerTextView.setHeight(120);
    headerTextView.setTextSize(17);
    }
    else {
        headerTextView.setWidth(125);
        headerTextView.setHeight(60);
        headerTextView.setTextSize(21);
    }
于 2014-08-07T06:12:14.387 に答える
0

textSize については、Google は「dp」の代わりに「sp」を使用することを提案しました ここに画像の説明を入力

このリンクをチェック http://developer.android.com/design/style/typography.html

複数の画面のフォント サイズをサポートするには、画面サイズごとに新しいリソースを作成する必要があります http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

于 2013-12-25T03:52:17.600 に答える