2014-10-28 42 views
0

提前感谢您的帮助。更改复选框大小android不使用XML

我有我创造一个方法调用

public int myMethod(Context context, doThing) { 
    if(doThing){ 
      this.checkBox = new CheckBox(context); 
      do some stuff... 
      return 1; 
    }else{ 
      do something else... 
      return 0; 
    } 
} 

我想改变复选框的大小(实际的盒子不是框和文本组合)与像复选框呼叫的复选框。 setBoxSize(mySize)。 setBoxSize不是原生的Android方法。有没有可能做到这一点,如果是这样,我该怎么办?

回答

3

如果你想创建一个预定义的宽度和高度,你的复选框,您可以使用此方法:

this.checkBox = new CheckBox(context); 
this.checkBox.setLayoutParams(new LinearLayout.LayoutParams(width, height)); // or if your parent is RelativeLayout use RelativeLayout.LayoutParams(width, height) 

注意 ,你的宽度和高度是以像素为单位的。

如果你想改变现有布局参数,可以你应该做这样的事情:

private void setBoxSize(CheckBox checkBox) { 
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) checkBox.getLayoutParams(); // or RelativeLayout.LayoutParams 
    params.height = yourHeightInPixels; 
    params.width = yourWidthInPixels; 
    checkBox.setLayoutParams(params); 
} 

编辑: 在这种情况下,如果你想改变复选框的按钮的大小,你可以只使用这种方法之一

checkBox.setButtonDrawable(int resId); 
checkBox.setButtonDrawable(Drawable d); 

并设置您的drawables的大小。不幸的是,Android没有操作按钮的方法(就像你提到的 - “盒子”)的复选框。提拉的

例如,使用作为复选框的按钮:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="true" 
     android:drawable="@drawable/ic_check_on" /> <!-- checked --> 
    <item android:state_checked="false" 
     android:drawable="@drawable/ic_check_off" /> 
</selector> 
+0

这看起来会改变实际复选框的大小。我不想更改复选框的大小,我想更改复选框内“框”的大小。如果这是有道理的。 – HXSP1947 2014-10-28 04:24:07

+0

是否可以通过用图像替换盒子来改变侧面?如果是这样,我该怎么做?我已经得出这样的结论,即改变尺寸可能是不可能的,如果是这样的话,做起来并不容易。 – HXSP1947 2014-10-28 04:58:26

+0

checkBox.setButtonDrawable(R.drawable.your_drawable_instead_box);你的drawable应该有你想要的大小。 – rom4ek 2014-10-28 05:13:54

0

你应该设置布局PARAMS为checkbox这样

//width and height are in pixels 
checkbox.setLayoutParams(new ViewGroup.LayoutParams(width,height)); 
+0

这是行不通的。我花了一个小时来测试各种组合。 – CoolMind 2016-03-01 12:19:37