我有一个带有自定义图标的复选框(大于默认图标),我选择的复选框是这样的:
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);
它在手机上运行良好,但在平板电脑屏幕和分辨率较大的平板电脑上,图标要大得多,但文字同时比手机上的文字要小得多,图标会覆盖文字的前几个字母。我该如何防止这种情况?
修改
我确认问题来自自定义复选框图标,其大小与默认复选框图标不同。两种设备的尺寸似乎不同,所以有没有办法找出默认复选框图标的大小,以便我可以对自定义图标或填充的大小进行必要的调整?
答案 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"
这将解决重叠问题...