Преоразмерете изображението на квадратчето за отметка в Android програмно

Искам програмно да преоразмеря изображението на CheckBox, но искам да използвам оригиналните изображения на телефона. Просто искам да го мащабирам. Не искам да предоставям собствени изображения, защото искам да запазя външния вид на телефона и пак ще трябва да ги мащабирам. Вече се опитах да получа ресурсите за системни изображения, използвайки Настройване на квадратчето за отметка на Android на различно изображение... и след това обратно към оригиналните изображения, но все още не можах да мащабирам чертаемото. (Опитах drawable.setBounds()). Вероятно също ще имам този проблем с радио бутоните. Благодаря за вашата помощ!


person Kio_BuE    schedule 07.09.2012    source източник
comment
опитахте ли да мащабирате височината и ширината на вашия CheckBox?   -  person Padma Kumar    schedule 07.09.2012
comment
checkbox.setWidth() и checkbox.setHeight() нямат ефект. checkbox.getLayoutParams().height=16 има ефект, но изрязва съдържанието (изображение и текст), както android:layout_width=16dip android:layout_height=16dip в оформлението xml.   -  person Kio_BuE    schedule 07.09.2012
comment
Не получих решение, така че ето моят частичен отговор: Започвайки с Android 11, можете да използвате setScaleX() и setScaleY() на изглед.   -  person Kio_BuE    schedule 18.09.2012


Отговори (1)


трябва просто да можете да зададете параметрите на оформлението в квадратчето за отметка:

LayoutParams lp = findViewById(R.id.chk_id).getLayoutParams();
lp.width = width;
lp.height=height;
findViewById(R.id.chk_id).setLayoutParams(lp);

Като получите параметрите на оформлението, преди да запазите всяка друга настройка на оформлението, свързана с изгледа

ширината и височината са в пиксели, за да ги мащабирате за използване на плътност:

DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int width = (int)(150*dm.density);

трябва да използвате класа Container за параметрите на Layout, този пример е за FrameLayout, но просто го заменете с типа на родителския контейнер.

person siliconeagle    schedule 07.09.2012
comment
това изглежда разумно, но не намирам R.id.chk_id. Опитах android.R.id.chk_id, но има само .checkbox (което не е идентификаторът на изображението в квадратчето за отметка). Ако тук съм ви разбрал погрешно и chk_id означава идентификатора на моя CheckButton, тогава отговорът е: това не работи. Той изрязва съдържанието (изображение и текст) на квадратчето за отметка. - person Kio_BuE; 07.09.2012