TextView кликабельно не работает в XML-файле - PullRequest
0 голосов
/ 12 октября 2018

Как я могу сделать TextView UnClickable.?Когда я пытался с android:clickable="false", но он не работает для меня.

См. Ниже XML код:

<TextView
   android:id="@+id/tv_submit"
   android:layout_width="match_parent"
   android:layout_height="@dimen/btn_height_common"
   android:layout_marginTop="@dimen/_15sdp"
   android:background="@drawable/back_btn_yellow_rounded"
   android:gravity="center"
   android:textColor="@color/white"
   android:layout_marginRight="@dimen/_20sdp"
   android:layout_marginLeft="@dimen/_20sdp"
   android:textStyle="bold"
   android:alpha="0.50"
   android:clickable="false" <!--Hear you can see i set clickable="false-->
   android:textSize="@dimen/btn_label_inputtextsize"
   android:text="@string/submit"
   android:fontFamily="@font/sf_pro_display_bold"/>

Обновление:

Инициализация Checkbox:

        chk_credit_card =  findViewById(R.id.chk_credit_card);
        chk_debit_card = findViewById(R.id.chk_debit_card);
        chk_bank_deposit = findViewById(R.id.chk_bank_deposit);
        chk_in_app_purchase = findViewById(R.id.chk_in_app_purchase);

Работа с кодом флажка:

for (CheckBox checkBox : chk_credit_card) {
            checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @SuppressLint("Range")
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked) {
                        // one of the checkbox is checked so enable button
                        tv_submit.setEnabled(true);
                        tv_submit.setAlpha(150);
                        tv_submit.setEnabled(true);
                       /* chk_debit_card.setChecked(false);
                        chk_bank_deposit.setChecked(false);
                        chk_in_app_purchase.setChecked(false);*/
                    } else {
                        // check if any of check box is checked
                        boolean isAnyChecked = false;
                        for (CheckBox box : chk_credit_card) {
                            if (box.isChecked()) isAnyChecked = true;
                        }
                        tv_submit.setEnabled(isAnyChecked);
                    }
                }
            });

Я ссылаюсь на слишком большое решение, но оно не работает для меня.Поэтому, пожалуйста, помогите.:)

Ответы [ 5 ]

0 голосов
/ 12 октября 2018

Попробуйте, в списке пакетов Android Studio В папке «res» есть папка «res», в которой находится папка select values, в которой указывается values ​​select styles.xml

Измените ее значения на

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

К этому

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

Надеюсь, это работает!

0 голосов
/ 12 октября 2018

установка onClickListener в TextView изменит свойство clickable на true.Если вы не хотите, чтобы textView нажал, не устанавливайте его clickListener.Если вы хотите, чтобы textView был кликабельным в некоторых случаях, а другие - нет, то вы можете установить прослушиватель кликов или удалить его следующим образом:

, чтобы включить клики:

textView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               //do your work
            }
        });

для отключения кликов:

textView.setOnClickListener(null);
0 голосов
/ 12 октября 2018
textView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (checkBox.isChecked()){
                    // do your work
                }
            }
        });

Обновление

  • У вас есть несколько флажков
  • Если флажок установлен, тогда кнопка должна быть включена
  • Флажок следует слушать в режиме реального времени.

    ArrayList<CheckBox> checkBoxes = new ArrayList<>();
    checkBoxes.add(checkBox1);
    checkBoxes.add(checkBox2); // add all your checkbox
    for (CheckBox checkBox : checkBoxes) {
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    // one of the checkbox is checked so enable button
                    textView.setEnabled(true);
                } else {
                    // check if any of check box is checked
                    boolean isAnyChecked = false;
                    for (CheckBox box : checkBoxes) {
                        if (box.isChecked()) isAnyChecked = true;
                    }
                    textView.setEnabled(isAnyChecked);
                }
            }
        });
    }
    

Предложение

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

Обновление 2

После изучения вашей проблемы вам на самом деле нужны RadioGroup, которые позволяютчтобы проверить только один RadioButton

if (radioGroup.getCheckedRadioButtonId() == -1){
  // no radio button is checked
} 
else {
  // one radio button is checked
}

Просто используйте RadioGroup в вашем XML.Вот пример.

<RadioGroup
    android:id="@+id/radioGroup"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:checkedButton="@id/rbMale"
    >

    <RadioButton
        android:id="@+id/rbMale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Male"
        />

    <RadioButton
        android:id="@+id/rbFemale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Female"
        />
</RadioGroup>

Вы также можете сделать radioGroup.getCheckedRadioButtonId() == R.id.rbMale.

Обновление 3

Если вам нужен CheckBox как RadioButton, его очень просто

<RadioButton
    style="@android:style/Widget.CompoundButton.CheckBox"
    ...
    />

Contrats !, вся ваша проблема решена :)

0 голосов
/ 12 октября 2018

Согласно вашему комментарию ... вы можете следовать этой логике.

textview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (if_checked) {
                    // go to another activity             
                }else{
                   //ignore
           }
        });
0 голосов
/ 12 октября 2018

Вы можете добавить это свойство к своему TextView, чтобы сделать его недоступным для клика

Из вашего XML

android:enabled="false"

В JAVA

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