2012-11-07 3 views
23

setEnabled (false)를 사용하여 설정할 수 없지만 작동하지 않습니다. 이 메서드 다음에 RadioGroup.IsEnabled()의 값은 false입니다. 값이 변경되었습니다.RadioGroup, setEnabled (false)가 작동하지 않습니다!

코드는 Android 프로그래밍 가이드에서 제공합니다. Ps : Spinner 구성 요소에서 setEnabled (false)를 사용하면 문제가 없습니다. 다음과 같이

코드는 다음과 같습니다

패키지 com.example.testviews;

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

답변

64

는 다음의 방법을 사용한다.

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

그것을 간단한 일 경우 그것은 또한 자체 반환 이후 :

것은 찾아 가능성을 포함하여,이보기의 후손 모든 만질 수있는 뷰를 반환을이처럼, 그들 모두를 해제해야 이보기 자체가 touchable 경우.

View#getTouchables()

+0

감사합니다! 그리고 두 번째 방법은 실제로 잘 작동합니다. 모든 RadioButton이 비활성화되었지만 첫 번째 방법은 여전히 ​​작동하지 않습니다! 코드가 컴퓨터에서 제대로 작동합니까? – JasonW

+0

대단히 감사합니다! – JasonW

+0

정말, 그 일 – abh22ishek

3

뷰 만질 여러 요소로 구성 될 수

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); 
    } 
} 

}

0

다음과 같은 코드를 사용할 수 없습니다;

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

일단보기가 사용 중지되면 더 이상 터치 할 수있는 하위/하위보기가 없습니다.

관련 문제