复选框灰显文字

问题描述:

我对复选框有疑问。如果复选框未勾选,但我无法做到这一点,我正在尝试变灰一些文字。我之前做过,但忘记了,我的代码有点乱了,因为我没有保存它的副本。复选框灰显文字

这是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" /> 

我知道这可能是一个简单的事情,但我只是不能想出办法来的。

感谢,

我会建议使用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); 
    } 
}); 

编辑:

您需要之前获得这些3个部件引用您尝试访问它们:

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

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

+0

问题是它找不到this.tbdataroam。它正在努力实施它。 – 2013-03-06 17:45:04

+0

那么你需要获得你想要访问的小部件的参考......我将编辑我的帖子。 – 2013-03-06 17:46:13

+0

非常感谢您的帮助。 – 2013-03-06 18:08:19