Java Code Examples for android.view.View#getOnFocusChangeListener()

The following examples show how to use android.view.View#getOnFocusChangeListener() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ItemBridgeAdapter.java    From TvRecyclerView with Apache License 2.0 6 votes vote down vote up
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Presenter presenter = mPresenters.get(viewType);
    Presenter.ViewHolder presenterVh = presenter.onCreateViewHolder(parent);
    View view = presenterVh.view;
    ViewHolder viewHolder = new ViewHolder(presenter, view, presenterVh);
    if (mAdapterListener != null) {
        mAdapterListener.onCreate(viewHolder);
    }
    View presenterView = viewHolder.mHolder.view;
    if (presenterView != null) {
        viewHolder.mFocusChangeListener.mChainedListener = presenterView.getOnFocusChangeListener();
        presenterView.setOnFocusChangeListener(viewHolder.mFocusChangeListener);
    }
    if (mFocusHighlight != null) {
        mFocusHighlight.onInitializeView(view);
    }
    return viewHolder;
}
 
Example 2
Source File: RecyclerViewTV.java    From AndroidTVWidget with Apache License 2.0 5 votes vote down vote up
@Override
public void onChildAttachedToWindow(View child) {
    // 设置单击事件,修复.
    if (!child.hasOnClickListeners()) {
        child.setOnClickListener(mItemListener);
    }
    // 设置焦点事件,修复.
    if (child.getOnFocusChangeListener() == null) {
        child.setOnFocusChangeListener(mItemListener);
    }
}
 
Example 3
Source File: TvRecyclerView.java    From TvRecyclerView with Apache License 2.0 5 votes vote down vote up
@Override
public void onChildAttachedToWindow(View child) {
    if (!ViewCompat.hasOnClickListeners(child)) {
        child.setOnClickListener(mItemListener);
    }
    child.setOnLongClickListener(mItemListener);
    if (child.getOnFocusChangeListener() == null) {
        child.setOnFocusChangeListener(mItemListener);
    }

}
 
Example 4
Source File: RecyclerViewTV.java    From Android-tv-widget with Apache License 2.0 5 votes vote down vote up
@Override
public void onChildAttachedToWindow(View child) {
    // 设置单击事件,修复.
    if (!child.hasOnClickListeners()) {
        child.setOnClickListener(mItemListener);
    }
    // 设置焦点事件,修复.
    if (child.getOnFocusChangeListener() == null) {
        child.setOnFocusChangeListener(mItemListener);
    }
}
 
Example 5
Source File: ItemBridgeAdapter.java    From adt-leanback-support with Apache License 2.0 5 votes vote down vote up
/**
 * {@link View.OnFocusChangeListener} that assigned in
 * {@link Presenter#onCreateViewHolder(ViewGroup)} may be chained, user should never change
 * {@link View.OnFocusChangeListener} after that.
 */
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (DEBUG) Log.v(TAG, "onCreateViewHolder viewType " + viewType);
    Presenter presenter = mPresenters.get(viewType);
    Presenter.ViewHolder presenterVh;
    View view;
    if (mWrapper != null) {
        view = mWrapper.createWrapper(parent);
        presenterVh = presenter.onCreateViewHolder(parent);
        mWrapper.wrap(view, presenterVh.view);
    } else {
        presenterVh = presenter.onCreateViewHolder(parent);
        view = presenterVh.view;
    }
    ViewHolder viewHolder = new ViewHolder(presenter, view, presenterVh);
    if (mAdapterListener != null) {
        mAdapterListener.onCreate(viewHolder);
    }
    View presenterView = viewHolder.mHolder.view;
    if (presenterView != null) {
        viewHolder.mFocusChangeListener.mChainedListener = presenterView.getOnFocusChangeListener();
        presenterView.setOnFocusChangeListener(viewHolder.mFocusChangeListener);
    }
    if (mFocusHighlight != null) {
        mFocusHighlight.onInitializeView(view);
    }
    return viewHolder;
}
 
Example 6
Source File: CollectionView.java    From TiCollectionView with MIT License 4 votes vote down vote up
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
	// To prevent undesired "focus" and "blur" events during layout caused
	// by ListView temporarily taking focus, we will disable focus events until
	// layout has finished.
	// First check for a quick exit. listView can be null, such as if window closing.
	// Starting with API 18, calling requestFocus() will trigger another layout pass of the listview,
	// resulting in an infinite loop. Here we check if the view is already focused, and stop the loop.
	if (listView == null || (Build.VERSION.SDK_INT >= 18 && listView != null && !changed && viewFocused)) {
		viewFocused = false;
		super.onLayout(changed, left, top, right, bottom);
		return;
	}
	OnFocusChangeListener focusListener = null;
	View focusedView = listView.findFocus();
	int cursorPosition = -1;
	if (focusedView != null) {
		OnFocusChangeListener listener = focusedView.getOnFocusChangeListener();
		if (listener != null && listener instanceof TiUIView) {
			//Before unfocus the current editText, store cursor position so
			//we can restore it later
			if (focusedView instanceof EditText) {
				cursorPosition = ((EditText)focusedView).getSelectionStart();
			}
			focusedView.setOnFocusChangeListener(null);
			focusListener = listener;
		}
	}
	
	//We are temporarily going to block focus to descendants 
	//because LinearLayout on layout will try to find a focusable descendant
	if (focusedView != null) {
		listView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
	}
	super.onLayout(changed, left, top, right, bottom);
	//Now we reset the descendant focusability
	listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);

	TiViewProxy viewProxy = proxy;
	if (viewProxy != null && viewProxy.hasListeners(TiC.EVENT_POST_LAYOUT)) {
		viewProxy.fireEvent(TiC.EVENT_POST_LAYOUT, null);
	}

	// Layout is finished, re-enable focus events.
	if (focusListener != null) {
		// If the configuration changed, we manually fire the blur event
		if (changed) {
			focusedView.setOnFocusChangeListener(focusListener);
			focusListener.onFocusChange(focusedView, false);
		} else {
			//Ok right now focus is with listView. So set it back to the focusedView
			viewFocused = true;
			focusedView.requestFocus();
			focusedView.setOnFocusChangeListener(focusListener);
			//Restore cursor position
			if (cursorPosition != -1) {
				((EditText)focusedView).setSelection(cursorPosition);
			}
		}
	}
}