2012-01-10 17 views
1

私はシークバーを持っており、コードで親指描画可能を設定しています。アクティビティが開始されると、サムの変更されたドロワブルを見ることができますが、シークバーのアクティビティから新しいアクティビティを開始して戻ると、シークバーのサムが表示されなくなります。これは、私が他の活動からシークバー活動に戻った場合にのみ起こります。Androidのseekbar - drawableを設定した後にサムが表示されない

他のアクティビティが親指の色や形を変える可能性があるため、onRestart()で親のdrawableを変更する必要があり、描画可能なものをリフレッシュする必要があります。

私はシークバーが、役に立たない...

EDIT上)(無効化を試してみました: 私は3つの静的Drawableのオブジェクトを作成してのonCreate(にイメージをロードしようとした)、私は後に来ていることに気づきましたもう一度SeekBarアクティビティを実行すると、既に設定されているサム図面を設定するとサムが表示されますが、描画可能を変更するとサムが表示されなくなります。

EDIT 2:私は親指にロードドローアブルを設定する。この場合

String gender = getGender(); 
    if (gender.equals(Profile.GENDER_1)) { 
     mSeekBar.setThumb(mDrawable1); 
    } else if (gender.equals(Profile.GENDER_2)) { 
     mSeekBar.setThumb(mDrawable2); 
    } else { 
     mSeekBar.setThumb(mDrawable3); 
    } 

そして、私は資源からドローアブルを取得しようとする場合、これはある

String gender = getGender();

if (gender.equals(Profile.GENDER_1)) { 
    mDrawable = mSeekBar.getContext().getResources().getDrawable(R.drawable.slider_thumb_1); 
} else if (gender.equals(Profile.GENDER_2)) { 
    mDrawable = mSeekBar.getContext().getResources().getDrawable(R.drawable.slider_thumb_2); 
} else { 
    mDrawable = mSeekBar.getContext().getResources().getDrawable(R.drawable.slider_thumb_3); 
} 

mSeekBar.setThumb(mDrawable); 

どちらの場合も、親指が見えなくなってます。..

問題になる可能性がありますか?誰かが答えを知っていますか? ありがとうございました!

+0

あなたが描画可能に変更するために使用したコードを投稿できる:setThumb()呼び出しが前にこの行を追加すること

みては? – Jave

+0

質問を更新しました、ありがとうございます! – Cata

+0

Hmの場合、mDrawablexの値をシークバーに設定してから、それがドロワブルでヌルでないことを確認してから印刷することができます。 (Log.i( "drawable"、 "drawable?" + mDrawable); – Jave

答えて

12

ドロアブルの境界を使用する前に設定していません。

mDrawable.setBounds(0,0, 
    mDrawable.getIntrinsicWidth(), 
    mDrawable.getIntrinsicHeight() 
); 
+0

ありがとう、あなたのおかげで、今、おかげで! – Cata

+0

もちろん、Googleはdrawkの範囲のデフォルト動作をkitkatのどこかで変更しました。そしてマシュマロ。 – ShellDude

関連する問題