태그 보관물: textview

textview

클릭 리스너 제거 이벤트가 변경되어 메시지와 관련된

텍스트가 순환하고 상태 메시지를 표시하는 객체가 있습니다. 메시지가 변경되면 객체의 클릭 이벤트가 변경되어 메시지와 관련된 활동으로 이동합니다.

그래서, 나는 이것을 가지고 TextView mTitleView이벤트를 할당하고 있습니다.

public void setOnTitleClickListener(OnClickListener listener) {
    mTitleView.setOnClickListener(listener);
}

클릭 이벤트를 어떻게 제거합니까? 실행 가능한 영역이없는 일부 상태 메시지가 있으므로 클릭 이벤트를 끄고 싶습니다. 또한 이러한 클릭 이벤트를 순환하여 올바르게 처리하고 싶지만 모범 사례가 확실하지 않습니다.



답변

mTitleView.setOnClickListener(null) 트릭을해야합니다.

더 나은 디자인은 OnClickListener에서 상태를 확인한 다음 클릭 리스너를 추가하고 삭제하는 것보다 클릭이 무엇을해야하는지 여부를 결정하는 것입니다.


답변

보기를 클릭 할 수없는 경우 (예 : TextView) 설정 setOnClickListener(null)하면보기를 클릭 할 수 있음을 의미합니다. mMyView.setClickable(false)보기를 클릭 할 수 없게 하려면 사용하십시오 . 예를 들어, 배경에 대해 XML 드로어 블을 사용하는 경우 (상태에 따라 다른 색상이 표시됨)보기를 여전히 클릭 할 수 있으면 사용자가 클릭 할 수 있고 다른 배경색이 표시되어 이상하게 보일 수 있습니다.


답변

아마도 setOnClickListener(null)?


답변

설정은 setOnClickListener(null)런타임에 클릭 리스너를 제거하는 좋은 아이디어이다.

또한 누군가가 전화 댓글을 달았없는 View.hasOnClickListeners()이 후 것은 반환 true, NO 내 친구.

다음은 클래스 hasOnClickListeners()에서 가져온 구현입니다.android.view.View

 public boolean hasOnClickListeners() {
        ListenerInfo li = mListenerInfo;
        return (li != null && li.mOnClickListener != null);
    }

하나님 감사합니다. 확인합니다 null.

모든 것이 안전합니다. 즐겨 🙂


답변

위의 답변은 날고 신뢰할 수없는 것 같습니다. 간단한 상대 레이아웃의 ImageView 로이 작업을 시도했지만 onClick 이벤트를 비활성화하지 않았습니다.

나를 위해 일한 것은 setEnabled를 사용하고있었습니다.

ImageView v = (ImageView)findViewByID(R.id.layoutV);
v.setEnabled(false);

그런 다음 다음을 사용하여보기가 활성화되어 있는지 확인할 수 있습니다.

boolean ImageView.isEnabled();

또 다른 옵션은 setContentDescription (String string) 및 String getContentDescription ()을 사용하여보기의 상태를 판별하는 것입니다.


답변

그냥 넣어, 그것은 나를 위해 일했다

itemView.setOnClickListener(null);


답변

    /**
 * Remove an onclick listener
 *
 * @param view
 * @author malin.myemail@gmail.com
 * @website https://github.com/androidmalin
 * @data 2016-05-16
 */
public static void unBingListener(View view) {
    if (view != null) {
        try {
            if (view.hasOnClickListeners()) {
                view.setOnClickListener(null);

            }

            if (view.getOnFocusChangeListener() != null) {
                view.setOnFocusChangeListener(null);

            }

            if (view instanceof ViewGroup && !(view instanceof AdapterView)) {
                ViewGroup viewGroup = (ViewGroup) view;
                int viewGroupChildCount = viewGroup.getChildCount();
                for (int i = 0; i < viewGroupChildCount; i++) {
                    unBingListener(viewGroup.getChildAt(i));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}