2011-09-10 12 views
1

テキストサイズとテキストを保存するブックからサンプルプログラムを作成しました。プログラムを再実行すると、テキストサイズが小さくなります。誰も私を助けることができる私は、Androidに新しいですフォントサイズがSharedPreferencesに保存されていません

public void onClick(View v) { 

      //Getting the SharedPreference object 
      prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
      SharedPreferences.Editor editor = prefs.edit(); 

      // save the values in the EditText view to preferences 
      editor.putFloat(FONT_SIZE_KEY, editText.getTextSize()); 
      editor.putString(TEXT_VALUE_KEY, editText.getText().toString()); 

      // Saves the values 
      editor.commit(); 

      //Display file saved message 
      Toast.makeText(getBaseContext(), "Font size saved Successfully!", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

//共有Preferncesは、あなたがseekBar.setProgress()にそれを渡したときにあなたのfloat fontSizeintにキャスト

SharedPreferences prefs = getSharedPreferences(prefName, MODE_PRIVATE); 

    // Set the TextView font size to the previously saved values 
    float fontSize = prefs.getFloat(FONT_SIZE_KEY, 12); 

    // init the SeekBar and EditText 
    seekBar.setProgress((int)fontSize); 
    editText.setText(prefs.getString(TEXT_VALUE_KEY, "")); 
    editText.setTextSize(seekBar.getProgress()); 

    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){ 

     @Override 
     public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) { 
      // Change the font size of the EditText 
      editText.setTextSize(progress); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar arg0) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar arg0) { 

     } 

    }); 

答えて

2

オブジェクトのロード。これにより、その分数部分が失われ、したがって小さくなる。次に、この丸められた値をseekBarから取得し、editText.setTextSize()を呼び出します。値が小数部分を失ったので、明らかに小さくなるはずです。

は、大きな値(seekBar.setMax(1000000000))なるようにあなたの進歩のための最大値を設定してみてください最初にseekBar.setProgress((int)(fontSize * 10000000))を呼び出し、onProgressChangededitText.setTextSize(((float) progress)/10000000)を行います。ここでは、整数型の浮動小数点数に基本的に大きな値を乗算して表現しています。 float 1.234に1000を乗算すると、1234.0が得られます。これは、派閥部分を失うことなく、intに変換できるようになりました。これを元に戻すには、まずint 1234を1234.0の浮動小数点数に変換してから1000で割ります。元のプログラムはプログレスバーのパーセント値で作業していたので、最大値を変換に使用する係数の100倍に設定しましたint型とfloat型の間の数値。この方法で、プログラムの元の機能を保持します。

+0

申し訳ありません。作業していません... – Pramod

+0

[OK]を、より完全なソリューションを追加しました。 – dragonroot

関連する問題