2011-07-18 7 views
3

私はプリファレンスリストを作成しました。プリファレンスをシークバーに追加する

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

<PreferenceCategory android:title="Settings"> 
<ListPreference 
    android:key="listPref" 
    android:title="Shake sensitivity" 
    android:summary="" 
    android:entries="@array/listArray" 
    android:entryValues="@array/listValues" 
    android:defaultValue="165" /> 


    <SeekBarPreference 
    android:defaultValue="22" 
    android:title="Set the default time" 
    android:key="seekBar"> 
    </SeekBarPreference> 

<CheckBoxPreference 
    android:key="checkboxPref" 
    android:title="Autodecrease music" 
    android:summary="" 
    android:defaultValue="true"/> 
</PreferenceCategory> 
</PreferenceScreen> 

私はSeekBarPreferenceボタンを押すと、ダイアログがシークバーとし、2つのボタンを思い付く:以下含まれていて、私はこれは私のpreferencelayout.xmlファイルに私を取得するコード

addPreferencesFromResource(R.xml.preferencelayout); 

からそれを得ます、保存してキャンセル!ここで

は、私の質問が来る:

私はシークバーが現在指していることをその値を表示することがシークバーの横に表示されるのTextViewまたは何かを追加することはできますか?

ユーザーが入力した値を取得するにはどうすればよいですか?

ありがとうございます!

答えて

0

から値を取得します。

SeekBar bar = (SeekBar)findViewById(R.id.seekbar); 
bar.setOnTouchListener(new SeekBar.OnTouchListener() 
{ 
    public boolean onTouch(View v, MotionEvent arg1) 
    { 
     View parent = (View)v.getParent(); 
     TextView textView = (TextView)parent.findViewById(R.id.seekbarProgress); 
     if (textView != null) 
     { 
      SeekBar seekBar = (SeekBar)v; 
      int progress = seekBar.getProgress(); 
      textView.setText(seekBar.getProgress() + "/" + seekBar.getMax()); 
     } 
     return false; 
    } 
}); 
+0

ありがとう! seekbarのためのfindviewbyid私はそれが(R.xml.preferencelayout)でなければならないと思います textviewについては、どこに私はそれを宣言する必要がありますか?シークバーと同じxmlで? – Seb

+0

はい、textviewはシークバーと同じxmlで宣言する必要があります。シークバーの右側にテキストビューを表示するには、relativeLayoutを使用して 'android:layout_toRightOf = "@ id/listviewSeekBar"'機能を使用することをお勧めします。 –