2012-11-07 31 views
23

Tôi đã sử dụng setEnabled (false) để thiết lập nó không thể, nhưng nó không hoạt động. và sau phương thức này, giá trị của RadioGroup.IsEnabled() là sai. Giá trị đã được thay đổi.RadioGroup, setEnabled (false) không hoạt động!

Mã này là từ Hướng dẫn lập trình Android. Ps: Thành phần Spinner sử dụng setEnabled (false) là tốt.

mã như sau:

gói com.example.testviews;

import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.RadioGroup; 

public class TestRadioGroup extends Activity { 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.radiogroup); 

    final RadioGroup testRadioGroup = (RadioGroup) findViewById(R.id.testRadioGroup); 

    final Button changeEnabledButton = (Button) findViewById(R.id.changeEnabledButton); 
    changeEnabledButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      changeEnabled(testRadioGroup); 
     } 
    }); 

    final Button changeBgColorButton = (Button) findViewById(R.id.changeBackgroundColorButton); 
    changeBgColorButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      changeBgColor(testRadioGroup); 
     } 
    }); 

} 

protected void changeBgColor(RadioGroup testRadioGroup) { 
    // TODO Auto-generated method stub 
    testRadioGroup.setBackgroundColor(Color.BLUE); 
} 

protected void changeEnabled(RadioGroup testRadioGroup) { 
    // TODO Auto-generated method stub 
    if (testRadioGroup.isEnabled()) { 
     testRadioGroup.setEnabled(false); 
    } else { 
     testRadioGroup.setEnabled(true); 
    } 
} 

}

Trả lời

64

sử dụng phương pháp sau đây:

for (int i = 0; i < testRadioGroup.getChildCount(); i++) { 
    testRadioGroup.getChildAt(i).setEnabled(false); 
} 
+0

, cảm ơn bạn rất nhiều! Và, em, phương pháp thứ hai thực sự hoạt động tốt. Nó vô hiệu hóa tất cả RadioButton! Nhưng lần đầu tiên vẫn không hoạt động! Mã có hoạt động tốt trên máy của bạn không? – JasonW

+0

Cảm ơn bạn rất nhiều! – JasonW

+0

Thực sự, hoạt động của nó – abh22ishek

3

Quan điểm có thể được soạn bởi nhiều yếu tố có thể sờ. Bạn cần phải vô hiệu hóa tất cả, như thế này:

for(View lol : your_spinner.getTouchables()) { 
    lol.setEnabled(false); 
} 

Nếu nó là một trong những đơn giản vì nó cũng trả về bản thân:

Tìm và trả lại toàn bộ quan điểm có thể sờ được hậu duệ của quan điểm này, có thể bao gồm quan điểm này nếu nó có thể chạm được.

View#getTouchables()

0

Bạn không thể sử dụng đoạn mã sau;

for(View lol : your_spinner.getTouchables()) { 
    lol.setEnabled(false); 
} 

Sau khi chế độ xem bị vô hiệu hóa, sẽ không có chế độ xem con/người có thể chạm được nữa.

Các vấn đề liên quan