как изменить фон кнопки и включить его после нажатия других кнопок - PullRequest
0 голосов
/ 14 февраля 2020

Как включить кнопку «Далее» после нажатия «Да» или «Нет» в каждом вопросе? Я хочу сделать мою кнопку «Далее» активной (изменить фон и включить) только после того, как на все вопросы ответили. Я не знаю, должен ли я использовать l oop или это возможно с помощью if-else. Любая помощь очень ценится.

Я разработал свою программу таким образом, чтобы пользователи могли нажимать кнопку «да» или «нет», и после ответа на все вопросы должна быть активирована кнопка «Далее» (измените фон и включить).

int one = 0;
int two = 0;
int three = 0;
int four = 0;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_price_estimate_question_one);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String phone_price = extras.getString("phone_price");
        final String numonly = phone_price.replaceAll("[^0-9]", "");

        final int phoneprice = Integer.parseInt(numonly);



        final Button ques_one_yes = (Button)findViewById(R.id.ques_one_yes);
        final Button ques_one_no = (Button)findViewById(R.id.ques_one_no);
        final Button ques_two_yes = (Button)findViewById(R.id.ques_two_yes);
        final Button ques_two_no = (Button)findViewById(R.id.ques_two_no);
        final Button ques_three_yes = (Button)findViewById(R.id.ques_three_yes);
        final Button ques_three_no = (Button)findViewById(R.id.ques_three_no);
        final Button ques_four_yes = (Button)findViewById(R.id.ques_four_yes);
        final Button ques_four_no = (Button)findViewById(R.id.ques_four_no);
        final Button nextstep = (Button)findViewById(R.id.next_step);


        ques_one_yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                one = 1;
                ques_one_yes.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_one_yes.setBackground(getDrawable(R.drawable.button_background));
                ques_one_no.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_one_no.setBackground(getDrawable(R.drawable.inactive_button_background));
            }
        });

        ques_one_no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                one = 1;
                ques_one_no.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_one_no.setBackground(getDrawable(R.drawable.button_background));
                ques_one_yes.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_one_yes.setBackground(getDrawable(R.drawable.inactive_button_background));

            }
        });

        ques_two_yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                two = 1;
                ques_two_yes.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_two_yes.setBackground(getDrawable(R.drawable.button_background));
                ques_two_no.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_two_no.setBackground(getDrawable(R.drawable.inactive_button_background));

            }
        });

        ques_two_no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                two = 1;
                ques_two_no.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_two_no.setBackground(getDrawable(R.drawable.button_background));
                ques_two_yes.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_two_yes.setBackground(getDrawable(R.drawable.inactive_button_background));
            }
        });

        ques_three_yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                three = 1;
                ques_three_yes.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_three_yes.setBackground(getDrawable(R.drawable.button_background));
                ques_three_no.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_three_no.setBackground(getDrawable(R.drawable.inactive_button_background));
            }
        });

        ques_three_no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                three = 1;
                ques_three_no.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_three_no.setBackground(getDrawable(R.drawable.button_background));
                ques_three_yes.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_three_yes.setBackground(getDrawable(R.drawable.inactive_button_background));
            }
        });

        ques_four_yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                four = 1;
                ques_four_yes.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_four_yes.setBackground(getDrawable(R.drawable.button_background));
                ques_four_no.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_four_no.setBackground(getDrawable(R.drawable.inactive_button_background));
            }
        });

        ques_four_no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                four = 1;
                ques_four_no.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
                ques_four_no.setBackground(getDrawable(R.drawable.button_background));
                ques_four_yes.setTextColor(getApplication().getResources().getColor(R.color.black));
                ques_four_yes.setBackground(getDrawable(R.drawable.inactive_button_background));

            }
        });

    }
}

Квесты

Ответы [ 4 ]

1 голос
/ 14 февраля 2020

вы можете попробовать "RadioGroup" и "RadioButton"

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    @Override
    public void onCheckedChanged(RadioGroup rb, int id){
            if (id == R.id.ques_one_yes)
    }
})

и в файле макета

<RadioGroup
    android:id="@+id/radioGroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RadioButton
        android:id="@+id/ques_one_yes"
        android:layout_width="wrap_content"
        android:BackGround="@drawable/rb_bg"
        android:layout_height="wrap_content"/>
</RadioGroup>

и в файле рисования rb_bg. xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_background"  android:state_checked="true"/>
    <item android:drawable="@drawable/inactive_button_background"/>
</selector>

и TextColor - это другой рисуемый файл

0 голосов
/ 14 февраля 2020

Самая простая реализация, которая приходит мне в голову - это проверить все значения int, которые вы определили. Вы можете сделать это во вспомогательном методе вместе с изменением фона и цвета

private void helperMethodName (Button buttonNo, Button buttonYes){
    buttonNo.setTextColor(getApplication().getResources().getColor(R.color.colorAccent));
    buttonNo.setBackground(getDrawable(R.drawable.button_background));
    buttonYes.setTextColor(getApplication().getResources().getColor(R.color.black));
    buttonYes.setBackground(getDrawable(R.drawable.inactive_button_background));

    if (one != 0 && two != 0 && three != 0 && fore != 0) {
        nextstep.setEnabled(true);
    }
}

И затем просто вызывать этот метод в свои клики

public void onClick(View v) {
one = 1;
helperMethodName(ques_one_no, ques_one_yes);
}
0 голосов
/ 14 февраля 2020

В общем, если вы хотите достичь этой реализации, вы можете попробовать следующее:

Чтобы включить / отключить кнопку next :

fun enableNextButton(isEnable: Boolean) {
    if(isEnable){
        button_next?.alpha = 1.0f
        button_next?.isEnabled = true
    }else{
        button_next?.alpha = 0.5f
        button_next?.isEnabled = false
    }
}

Так что вызовите enableNextButton (true), если вы хотите включить следующую кнопку, в противном случае передайте ложный параметр методу. Также альфа устанавливает размытие кнопки, которое помогает вам показать вид кнопки отключения.

0 голосов
/ 14 февраля 2020

Вы берете начальные значения для всех опций как 0 и делаете их 1 на OnClick. Просто укажите if-else в вашем методе onCreate, например:

if (one = 1 && two = 1 && three = 1 && four = 1) button.setEnable (true); else button.setEnable (false);

если все значения равны 1, тогда активируйте кнопку, иначе отключите ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...