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

仍然在寻找解决方案的人请在复选框属性中使用以下行

android:drawablePadding="15dp"

这将解决重叠的问题......

于 2014-06-17T13:14:11.050 回答
0

这会因为不同的屏幕密度而发生,我们可以通过使用以下代码来避免:检查CheckBox and text 之间的问题间距

于 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 回答