Как сделать кнопку изначально отключенной или нажатой в Android?

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

Как/где это реализовать?

Дополнительная проблема заключается в том, что мои кнопки являются ImageButton-s, поэтому, вероятно, мне нужен актив для представления отключенного состояния. К сожалению, я не нашел способа определить отключенное состояние в селекторе?


person Dims    schedule 19.01.2017    source источник
comment
Проверьте, поможет ли вам этот ответ.   -  person Diego Marcher    schedule 19.01.2017


Ответы (3)


Ты можешь использовать

button.setEnabled(true), чтобы сделать кнопку доступной для нажатия.

и

вы можете использовать button.setEnabled(false), чтобы сделать кнопку недоступной для нажатия.

Вы можете применить это так

Первоначально в методе создания вы можете сделать это:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_in_app_billing);

        startButton = (Button)findViewById(R.id.buyButton);
        stopButton = (Button)findViewById(R.id.clickButton);
        stopButton.setEnabled(false);
    }

а затем по методу нажатия кнопки

public void buttonClicked (View view)
    {
        stopButton.setEnabled(false);
        startButton.setEnabled(true);
    }
person Abhriya Roy    schedule 19.01.2017
comment
Да, но где вызывать эти методы, чтобы это происходило при инициализации? - person Dims; 19.01.2017
comment
Вам также нужно будет установить button.setClickable(false), чтобы отключить поведение кликов, и true аналогичным образом. - person Obscure Geek; 19.01.2017

Без какого-либо примера кода я не могу привести какие-либо конкретные примеры для вашего проекта. Однако установка android:enabled="false" в файле макета для кнопки «Остановить изображение» приведет к раздуванию макета с отключенной по умолчанию кнопкой «Остановить изображение».

Что касается представления отключенных состояний, вы можете использовать выбираемые селекторы. Допустим, у вас есть файл по адресу res/drawable/stop_state.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false"  android:drawable="@drawable/stop_disabled" />
    <item android:drawable="@drawable/stop_enabled" />
</selector>

В макете, содержащем ваш ImageButton, вы должны установить свойство android:drawable для этого рисунка, например.

android:drawable="@drawable/stop_state"

Аналогичным образом создайте селектор для кнопки записи и управляйте включенными состояниями в своей деятельности с помощью .setEnabled(boolean) в зависимости от того, записывает ли ваше приложение в данный момент.

person Michael Dodd    schedule 19.01.2017

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

Я сохранил логическое значение, чтобы сохранить состояние кнопки, затем внутри прослушивателя кликов кнопки я внес соответствующие изменения. Вот как:

        private boolean isTurnedOn = false;
        playButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view)
        {


            if(!isTurnedOn)
            {
                //playButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.pause));
                //isTurnedOn = true;
                //mPlayer.start();
                //mPlayer.seekTo(length);


            }
            else
            {
                //playButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.play2));
                //isTurnedOn = false;
                //mPlayer.pause();
                //length = mPlayer.getCurrentPosition();
            }

        }
    });

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

Надеюсь, поможет.

person OBX    schedule 19.01.2017