5634


Androidで、checkbox のサイズをコードだけで指定する方法はありますか？

画像を使用する方法はよく見かけるのですが、コードだけでサイズを調整する方法が見当たらないのです…。


CC BY-SA 3.0
2015-01-30T13:27:32.870
5632
2015-01-30T14:52:30.443
205
question
android
Androidのcheckboxのサイズをコードで変更したい


基本的には、<https://stackoverflow.com/questions/2151241/android-how-to-change-
checkbox-size>  
で回答されている内容をjavaにそのまま落とせば実現できます。  
CheckboxもViewの種類なのでViewに定義されているメソッドは大体使えます。  
[Android
DevelopersのViewの説明](http://developer.android.com/reference/android/view/View.html)の  
`XML Attributes`という項目にxml⇄javaの置換表が掲載されているので  
一度ご参照になってはいかがでしょうか。  
とりあえず、一番簡単そうだった

[code]

    <CheckBox
        ...
        android:scaleX="0.70"
        android:scaleY="0.70"
    />
    
[/code]

をjavaのソースコードで実現してみました。  
<http://developer.android.com/guide/topics/ui/controls/checkbox.html>  
のソースコードを一部借りています。

xml:

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <CheckBox android:id="@+id/checkbox_meat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="meat"
            android:onClick="onCheckboxClicked"/>
    </LinearLayout>
    
[/code]

Activity:

[code]

    public class MainActivity extends Activity {
        CheckBox mCheckBoxMeat;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mCheckBoxMeat = (CheckBox) findViewById(R.id.checkbox_meat);
            if (mCheckBoxMeat.isChecked()) {
                mCheckBoxMeat.setChecked(false);
            }
        }
    
        public void onCheckboxClicked(View view) {
            // Is the view now checked?
            boolean checked = ((CheckBox) view).isChecked();
    
            // Check which checkbox was clicked
            switch (view.getId()) {
                case R.id.checkbox_meat:
                    if (checked) {
                        LinearLayout.LayoutParams layoutParams =
                                new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                                        ViewGroup.LayoutParams.WRAP_CONTENT);
                        // 要らないかも。
                        layoutParams.gravity = RelativeLayout.ALIGN_PARENT_LEFT;
                        layoutParams.gravity = RelativeLayout.ALIGN_PARENT_TOP;
                        mCheckBoxMeat.setLayoutParams(layoutParams);
                        mCheckBoxMeat.setScaleX(0.7f);
                        mCheckBoxMeat.setScaleY(0.7f);
    
                    } else {
                        // 何となくわざと。
                        view.setLayoutParams(
                                new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                                        ViewGroup.LayoutParams.WRAP_CONTENT));
                        view.setScaleX(1.0f);
                        view.setScaleY(1.0f);
                    }
                    break;
                default:
                    break;
            }
        }
    }
    
[/code]

チェックがない(デフォルト時)  
![画像の説明をここに入力](https://i.stack.imgur.com/W679V.png)

チェックを付けた時  
![画像の説明をここに入力](https://i.stack.imgur.com/rFYxo.png)

以上、よろしくお願いいたします。


CC BY-SA 3.0
2015-01-30T14:52:30.443
5634
2015-01-30T14:52:30.443
2017-05-23T12:38:55.307
-1
2904
5632
answer