2011-08-09 9 views
88

私は2つのエミュレータ(2.2と3.0)でテストするEclipse Indigoを使用しています。TextView - プログラムでテキストサイズを設定すると動作しないようです

エミュレータを実行しようとすると、テキストサイズを設定すると、テキストサイズを設定すると何も表示されません(テキストサイズをコメントアウトすると、テキストは赤色で表示されます)。私は何とか日食はコードを再構築していないと思ったが、私は青の背景を追加するコード行を追加し、それが機能した。私はまだ成功していないテキストを設定した後にテキストサイズを設定しようとしました。コードは以下の通りです。ご協力いただきありがとうございます! (免責事項) - 私はXMLから離れようとしています。私はすでにJavaを知っているので、私はそれに依存したくありません。

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.widget.TextView; 

public class TestAndroidvs2Activity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    TextView text = new TextView(this); 
    text.setTextColor(Color.RED); 
    text.setTextSize(2);  
    text.setBackgroundColor(Color.BLUE); 
    text.setText("Hello Android"); 


    setContentView(text); 
    } 
} 

答えて

12

テキストサイズ2は実質的に見えません。少なくとも14で試してみてください。ところで、xmlを使用することには多くの利点があり、一度「Hello World」よりも複雑なことをしなければならないと、あなたの人生は楽になります。

+0

私は14でそれを試してみましょう。私は最初の投稿で言ったように - 2が小さすぎても、それは私の画面を空白にしてはいけませんか?私はちょうど単にサイズを設定するのではなく、テキストがすでにあったスケールを超えてスケ​​ールを読んでいたと思います。 - 私は見ていますが、とにかく質問します - デフォルトのサイズは何ですか?とりあえずありがとう。 – cspam

+0

btw - はい私はxmlがその利点を持つことができることを認識していますが、私はそれでゼロ経験を持っています。うん、それはおそらく簡単に知ることを知っている。私はすでにJavaに精通しているので、できるだけ多くのクラスに慣れるのは本当に便利だと思っただけです。それは、XMLの並べ替えを使用して、あなたからそれをたくさん隠しているようです。 – cspam

+0

それはそれを隠さない - それは同じパラメータを持つ同じクラスです。この2つの間で翻訳できるようになるのに時間がかかりますが、実際はかなり効率的です。ボーナスとして、ビューをXMLで定義すると、システムは、コードを変更する必要なく、レイアウトファイルだけで、さまざまな画面サイズ、密度、および向きを処理します。 –

11

コードでテキストサイズの設定の詳細については、thisのリンクを参照してください。基本的には言う:

ます。public void setTextSize(int型のユニット、フロートサイズ)

以来:指定されたユニットと 値にデフォルトのテキストのサイズを設定するAPIレベル1。可能な寸法単位については、TypedValueを参照してください。 TEXTSIZEパラメータ

ユニット所望の寸法単位:

アンドロイド属性 関連XML。
size指定された単位で希望するサイズ。

+1

を使用した例私のコードとintellisenseによると、実際にsetTextSize、setTextSize(float size)、setTextSize(int unit、float size)の2つのオプションがあります。あなたがリンクしたドキュメンテーションがこれを確認します。 – cspam

+0

右 - 試しましたか?また、ニコライ氏は、2が小さく見えることになり、増やしてみるとも言います。 – Jack

+0

はい、問題は、私が今のところそれをしようとすると、テキストが表示されません。そのちょうど空白の画面。 2が目立たなかったとしても、スクリーンはなぜ空白ですか? – cspam

369

メソッドTextView.setTextSize(int unit , int size);は2つのパラメータをとります。

これを試してみてください:

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14); 

thisthisを参照してください。

public static float pxFromDp(float dp, Context mContext) { 
    return dp * mContext.getResources().getDisplayMetrics().density; 
} 

ここのTextViewのTextSizeプロパティプログラムによるを設定します:私の場合は

+20

これは正解です。具体的には: 'フロートmyTextSize = TypedValue.applyDimension(。TypedValue.COMPLEX_UNIT_SP、 \t \t \t \t 18F、context.getResources()getDisplayMetrics());' –

+0

はどうもありがとうございました! – DmitryKanunnikoff

6

この方法を使用し

textView.setTextSize(pxFromDp(18, YourActivity.this)); 

これは私のために問題を修正しました:)

+0

こんにちは@Dhruv Raval、私は自分のプロジェクトでフォントのサイズを調整できるようにしています。この値18が任意の画面密度に対して有効な場合、または各画面の寸法を作成する必要がありますか? –

39

楽しんでください。 すべてのデバイスで一様なフォントサイズが得られました。私たちは、文字サイズの変更のための別の方法を使用する必要はありませんので、

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font)); 
+0

R.dimen.fontは一意の番号ですか、デバイスごとにサイズが異なりますか? –

+0

私の場合、私はこれらのフォルダのファイルdimen.xmlに値、値-sw600dp、値-sw720dpという特定の値を持つフォントを宣言しました。 – Vikas

+0

textViewがtextView.setTextSize(R.dimen.text_size_max)が呼び出された後に消えてしまったのは間違いですが、あなたのメソッドを使うと動作します。 – li2

3

現在、setTextSize(float size)方法がうまくいく

/** 
* Set the default text size to the given value, interpreted as "scaled 
* pixel" units. This size is adjusted based on the current density and 
* user font size preference. 
* 
* <p>Note: if this TextView has the auto-size feature enabled than this function is no-op. 
* 
* @param size The scaled pixel size. 
* 
* @attr ref android.R.styleable#TextView_textSize 
*/ 
@android.view.RemotableViewMethod 
public void setTextSize(float size) { 
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size); 
} 

私は、二重にEclipseで確認

textView.setTextSize(20); // set your text size = 20sp 
関連する問題