0

次のように設定したチェックボックスのカスタムアイコン(デフォルトのアイコンよりも大きい)が付いたチェックボックスがあります。

mon  = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.checkbox_on));
moff = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.checkbox_off));

state = new StateListDrawable();
state.addState(new int[] {-android.R.attr.state_checked}, moff);
state.addState(new int[] { android.R.attr.state_checked}, mon);

cb.setButtonDrawable(state);

携帯電話ではうまく機能しますが、画面と解像度が大きいタブレットではアイコンははるかに大きくなりますが、同時にテキストは携帯電話よりもはるかに小さく、アイコンはテキストの最初の数文字に重なります。どうすればこれを防ぐことができますか?

編集:

問題は、デフォルトのチェックボックスアイコンとは異なるサイズのカスタムチェックボックスアイコンにあることを確認しました。サイズは両方のデバイスで異なるように見えるので、デフォルトのチェックボックスアイコンのサイズを確認して、カスタムアイコンまたはパディングのサイズを必要に応じて調整できるようにする方法はありますか?

4

3 に答える 3

0

これは画面密度が異なるために発生します。このコードを使用することで回避できます:この質問を確認してくださいチェックボックスとテキストの間隔

于 2012-05-31T11:08:18.833 に答える
0

dpiに基づいてチェックボックスアイコンを動的にスケーリングすることで解決しました。したがって、常に適合し、テキストも問題ありません。

int gg = (int) (this.getResources().getDisplayMetrics().density * cb_info.getCompoundPaddingLeft());
mon  = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.checkbox_on ));
int scalex = gg;
int scaley = mon.getBitmap().getHeight() * gg / mon.getBitmap().getWidth ();

mon  = new BitmapDrawable(Bitmap.createScaledBitmap( BitmapFactory.decodeResource(getResources(), R.drawable.checkbox_on ), scalex, scaley, true));
moff = new BitmapDrawable(Bitmap.createScaledBitmap( BitmapFactory.decodeResource(getResources(), R.drawable.checkbox_off), scalex, scaley, true));
于 2012-06-01T00:21:10.937 に答える
0

それでも解決策を見つけている人は誰でも、のチェックボックス属性で以下の行を使用してください

android:drawablePadding="15dp"

これは重複の問題を解決します...

于 2014-06-17T13:14:11.050 に答える