如何阻止我的自定义复选框图标覆盖android上的文本?

时间:2012-05-31 10:49:01

标签: android checkbox size

我有一个带有自定义图标的复选框(大于默认图标),我选择的复选框是这样的:

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);

它在手机上运行良好,但在平板电脑屏幕和分辨率较大的平板电脑上,图标要大得多,但文字同时比手机上的文字要小得多,图标会覆盖文字的前几个字母。我该如何防止这种情况?

修改

我确认问题来自自定义复选框图标,其大小与默认复选框图标不同。两种设备的尺寸似乎不同,所以有没有办法找出默认复选框图标的大小,以便我可以对自定义图标或填充的大小进行必要的调整?

3 个答案:

答案 0 :(得分:0)

这会因屏幕密度不同而发生,我们可以通过使用此代码来避免:查看此问题Spacing between CheckBox and text

答案 1 :(得分: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));

答案 2 :(得分:0)

无论是谁找到解决方案,请使用

中复选框属性中的以下行

android:drawablePadding="15dp"

这将解决重叠问题...