2014-10-28 62 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