复选框灰显文本

时间:2013-03-06 17:14:05

标签: android checkbox

我的复选框有问题。如果未勾选复选框但我无法执行此操作,我会尝试将某些文本灰显。我之前做过这个但是已经忘记了,我的代码有点搞砸了因为我没有保存它的副本。

这是java。

package com.example.mobilebillforecaster;

import com.example.mbf.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;

  public class Eticorporate extends Activity {
protected void onCreate(Bundle Bundle)
{
 super.onCreate(Bundle);
 setContentView(R.layout.eti_corporate);

((CheckBox)findViewById(R.id.cRoam)).setOnClickListener(new View.OnClickListener()
 {

public void onClick(View v)
  {
    if (((CheckBox)v).isChecked())
    {
      this.tbDataroam.setEnabled(true);
      this.bIntroam.setEnabled(true);
      this.dataroam.setEnabled(true);
      return;
    }
    this.tbDataroam.setEnabled(false);
    this.bIntroam.setEnabled(false);
    this.dataroam.setEnabled(false);
  }
 });

这是XML

  <CheckBox
    android:id="@+id/cRoam"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@id/datalocal"
    android:layout_marginTop="5.0dip"
    android:checked="false"
    android:onClick="onCheckboxClicked"
    android:text="@string/checkroam" />

  <TextView
    android:id="@+id/dataroam"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@id/datalocal"
    android:layout_below="@+id/bIntroam"
    android:layout_marginTop="18.0dip"
    android:enabled="false"
    android:text="@string/data_roam"
    android:textAppearance="?android:textAppearanceMedium" />

 <ToggleButton
    android:id="@+id/tbDataroam"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bIntroam"
    android:layout_marginTop="7.0dip"
    android:layout_toRightOf="@id/nationalmins"
    android:enabled="false"
    android:text="@string/data_roam" />

<Button
    android:id="@+id/bIntroam"
    android:layout_width="250.0dip"
    android:layout_height="50.0dip"
    android:layout_alignRight="@id/bundle"
    android:layout_below="@id/cRoam"
    android:enabled="false"
    android:text="@string/int_roam" />

我知道这可能是一件简单的事情,但我无法弄明白。

感谢,

1 个答案:

答案 0 :(得分:0)

我建议改为使用OnCheckedChangeListener

看起来像这样:

((CheckBox)findViewById(R.id.cRoam)).setOnCheckedChangeListener(new OnCheckedChangeListener()
{  
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (isChecked)
        {
            this.tbDataroam.setEnabled(true);
            this.bIntroam.setEnabled(true);
            this.dataroam.setEnabled(true);
            return;
        }
        this.tbDataroam.setEnabled(false);
        this.bIntroam.setEnabled(false);
        this.dataroam.setEnabled(false);
    }
});

编辑:

在尝试访问之前,您需要获取对这三个小部件的引用:

ToggleButton tbDataroam = (ToggleButton) findViewById(R.id.tbDataroam);

重复其他2个小部件......