지금까지 사용자가 버튼을 누르는 것을 막고 싶을 때 button.setClickable(false);
하고 일반적으로 텍스트를 일종의 회색으로 변경하여 사용자에게 버튼이 비활성화되었음을 알립니다. 오늘 나는 그 setEnabled()
재산을 우연히 발견 했습니다.
그래서 아래의 방법에 대한 설명을보기 위해 설명서로 이동했습니다.
setEnabled(boolean enabled)
Set the enabled state of this view.
이것은 무엇을 의미합니까? 활성화 상태 / 클릭 가능 상태와 비활성화 상태 / 클릭 불가능 상태의 차이점은 무엇입니까? 누군가 내가 이전에하던 작업을 수행하는 것과 클릭 가능한 속성을 사용하는 것과 setEnabled()
속성을 사용하는 것의 차이점이 무엇인지 설명해 주 시겠습니까? 언제 사용해야합니까? Stack Overflow를 검색했지만 관련 내용을 찾을 수 없습니다.
답변
그게 무슨 뜻이야?
“GUI 위젯”에 대한 Wikipedia 페이지 인용 :
애플리케이션의 맥락에서 위젯은 주어진 시점에서 활성화 또는 비활성화 될 수 있습니다. 활성화 된 위젯에는 키 입력 또는 마우스 동작과 같은 이벤트에 응답 할 수있는 기능이 있습니다. 이러한 이벤트에 응답 할 수없는 위젯은 비활성화 된 것으로 간주됩니다. 비활성화 된 위젯의 모양은 일반적으로 활성화 된 위젯과 다릅니다. 비활성화 된 위젯은 더 밝은 색상으로 그려 지거나 어떤 식 으로든 시각적으로 가려 질 수 있습니다. 예를 보려면 오른쪽 이미지를 참조하십시오.
이 개념은 수십 년 동안 존재 해 왔으며 대부분의 GUI 프레임 워크에서 찾을 수 있습니다.
활성화 상태 / 클릭 가능 상태와 비활성화 상태 / 클릭 불가능 상태의 차이점은 무엇입니까?
Android에서 클릭 할 수없는 위젯은 클릭 이벤트에 응답하지 않습니다. 비활성화 된 위젯은 클릭 할 수있을뿐만 아니라 비활성화되었음을 시각적으로 나타냅니다.
의미 : “.. 버튼을 시각적으로”비활성화 “하기 때문에 어떻게 시각적으로 변경됩니까?
무엇하게 Button
유사한 모양과 응답하는 것은 Button
A는 그 배경이다 StateListDrawable
. 비활성화 상태에 사용되는 특정 이미지가 있습니다.
답변
따라서 기본적으로 활성화 된 false는 런타임에 설정 될 때 응답 및 클릭 가능한 false 여전히 응답에 응답하지 않으며 방금 시도해 보았습니다.
답변
내가 다른 곳에서 언급하지 않은 큰 차이점은 뷰가 겹치는 것입니다. clickable = true 및 enabled = false 인보기는 뒤에있는보기를 누를 수 없습니다. 그러나 clickable = false 인보기는 뒤에있는보기를 누를 수 있습니다.
답변
Dilip이 말했듯이 setClickable은 런타임에 설정되면 작동하지 않습니다. 다음은 작동하도록하는 트릭입니다.
ToggleButton toggle = ...
toggle.setOnTouchListener(new ToggleButton.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// If true is returned, the event is eated by the TouchListener
return !v.isClickable();
}
});
답변
답변
차이점은 위에 나열되어 있지만 팁이 있습니다. setOnClickListener () 후에 setClickable ()을 사용하십시오. 이것 때문에:
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
답변
setClickable public void setClickable (부울 클릭 가능)
특정보기에 대한 클릭 이벤트를 활성화하거나 비활성화합니다. 보기를 클릭 할 수있는 경우 클릭 할 때마다 상태가 “눌려 짐”으로 변경됩니다. 이보기 속성이 비활성화되면 상태가 변경되지 않습니다.
setEnabled public void setEnabled (부울 활성화)
이 뷰의 활성화 상태를 설정합니다. 특정 뷰가 활성화되도록 설정된 경우 매개 변수에 true를 전달하고 그렇지 않으면 false를 전달합니다.
