私はギャラクシータブ1、7インチhdpiとギャラクシータブプラス、7インチhdpiを使用していますが、解像度が高く、私のアプリケーションでは、テキストはギャラクシータブでうまく読むことができますが、ギャラクシータブプラスでは小さすぎます。フォントサイズとレイアウトでspを使用しています-大きい。何か案が?ありがとう
12 に答える
これは、プログラムでサイズを設定する場合に役立ちます。テキストは各デバイスで同じサイズで表示されます
TextView text = new TextView(this);
text.setText("text");
text.setTextSize(16 * getResources().getDisplayMetrics().density);
ハードウェア仕様では、Galaxy Tab 1 は MDPI デバイスですが、Android 2.x を使用しているため、Samsung はプログラムで HDPI リソースを使用するように設定しています。したがって、次のようにすることをお勧めします。
dimens.xml
ディレクトリにファイルを作成しますvalues
。- そこに置く
<dimen name="font_size">30sp</dimen>
。これはデフォルトのフォントサイズです。 dimens.xml
ディレクトリにファイルを作成しますvalues-large
。- そこに置く
<dimen name="font_size">20sp</dimen>
。これはgalaxy tab 1のフォントサイズです。 dimens.xml
ディレクトリにファイルを作成しますvalues-sw600dp
。- そこに置く
<dimen name="font_size">30sp</dimen>
。これは、Android 3.x 以降を搭載したその他のタブレットのフォント サイズです。 - レイアウトで指定
android:textSize="@dimens/font_size"
次のように、密度または画面サイズに関連するさまざまなフォルダーを作成するだけです
オプション1。
values-large
values-small
values-normal
詳細については、このリンクを確認してください...
オプション 2。
mTextView.setTextSize(16 * getResources().getDisplayMetrics().density);
これにより、密度に応じてTextSizeが得られます。
これを試して:
このような
android:textSize= "10sp"
sp
Scale-independent Pixels - これは dp 単位に似ていますが、ユーザーのフォント サイズ設定によってもスケーリングされます。フォントサイズを指定する場合は、このユニットを使用することをお勧めします。画面密度とユーザーの好みの両方に合わせて調整されます。
(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;
}
異なる値を使用することをお勧めします。ご覧ください -
詳しくはこちら
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
また
http://developer.android.com/guide/practices/screens_support.html
以下のコードは、ユーザーのシステム フォント サイズ設定を使用して、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);
screen の物理的なサイズに基づいて販売されている、このサイズのいずれかを使用できます。すべてのデバイスのテキストは同じ物理サイズになります。
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);
}
textSize については、Google は「dp」の代わりに「sp」を使用することを提案しました
このリンクをチェック http://developer.android.com/design/style/typography.html
複数の画面のフォント サイズをサポートするには、画面サイズごとに新しいリソースを作成する必要があります http://developer.android.com/guide/topics/resources/more-resources.html#Dimension