Как в Switch ограничить кликабельную область только у переключателя?

211
24 октября 2017, 00:20

Switch:

android:id="@+id/sw_print_receipts"
android:layout_width="match_parent"
android:layout_height="@dimen/base_item_height"
android:text="@string/receipt_printers"

Сейчас у меня кликабельная область у всего свичера, куда бы не кликнул (рис (1)). Как сделать так, чтобы кликабельным был только переключатель (рис (2))?

Answer 1

Лучшее решение – писать текст в отдельном TextView.

Но, если Вы уж очень хотите, то можно ограничить кликабельную область только переключателем:

mSwitch.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        Rect thumbRect = mSwitch.getThumbDrawable().getBounds();
        return !thumbRect.contains((int) motionEvent.getX(), (int) motionEvent.getY());
    }
});

Здесь, при клике по Switch запрашивается область, в которой размещен переключатель и далее происходит проверка: если клик совершен вне переключателя, то возвращается true и клик считается обработанным, в противном случае вызывается дефолтное поведение Switch.

READ ALSO
Как пользоваться Telegram Api в Java?

Как пользоваться Telegram Api в Java?

Объясните пожалуйста, как работать с Telegram ApiДопустим мне надо проверить зарегистрирован ли номер

471
Как лучше считывать такие числа по средствам java из строки?

Как лучше считывать такие числа по средствам java из строки?

Ниже приведен форматЕсть строки такого вида:

280
Как создавать папку внутри директории .Jar

Как создавать папку внутри директории .Jar

У меня есть программа в которую необходимо ввести данные и она создает папку с файлами, имя отчество и прочееКак можно сделать, чтобы программа...

243