TextView Clickable在XML文件中不起作用

时间:2018-10-12 05:57:51

标签: android android-layout

我该怎么办 TextView 不可点击。 ?当我尝试使用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 :(得分:1)

    int arr[] = {-1,3333,1,3,4,2,3,4,5,6,7,4,11,12,332,1,-11};
    int i=0,j=1;
    int size = sizeof(arr)/sizeof(arr[0]);
    print_array(arr,size);
    while(i<size-1)
    {
        while(j<size-i)
        {
            {
                if(arr[j]<arr[j-1])
                    swap(&arr[j],&arr[j-1]);
            }
            j++;
        }
        i++;
    }
    print_array(arr,size);

更新

  • 您有多个复选框
  • 如果选中任何复选框,则应启用按钮
  • 复选框应实时收听。

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

建议

TextView默认没有波纹效果,请使用Button以获得良好的UI。选中this answer,使背景选择器可以启用,禁用和按下颜色。

更新2

调查了问题之后,您实际上需要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); } } }); } ,它只能检查一个RadioGroup

RadioButton

只需在XML中使用RadioGroup。这是一个例子。

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

您也可以进行<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>

更新3

如果您想要CheckBox之类的RadioButton,则非常简单

radioGroup.getCheckedRadioButtonId() == R.id.rbMale

矛盾!,您的所有问题都已解决:)

答案 1 :(得分:0)

您可以将此属性添加到datepicker中,以使其不可单击

从您的XML

TextView

在JAVA中

android:enabled="false"

答案 2 :(得分:0)

根据您的评论... ,您可以遵循此逻辑。

textview.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (if_checked) {
                    // go to another activity             
                }else{
                   //ignore
           }
        });

答案 3 :(得分:0)

将onClickListener设置为TextView会将clickable属性更改为true。如果您不想单击textView,请不要将其设置为clickListener。 如果您希望在某些情况下可以单击textView,而在其他情况下不希望单击,则可以设置单击侦听器或将其删除,例如:

启用点击:

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

禁用点击:

textView.setOnClickListener(null);

答案 4 :(得分:0)

尝试一下, 在Android Studio软件包列表中,有一个名为“ res”的文件夹 在“ res”文件夹下,选择名为values的文件夹,在给定文件夹中选择styles.xml

更改其值
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

为此

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

希望它有效!