Ejemplo n.º 1
0
		private bool backspaceOrForwardDelete(android.view.View view, android.text.Editable
			 content, int keyCode, android.view.KeyEvent @event, bool isForwardDelete)
		{
			// Ensure the key event does not have modifiers except ALT or SHIFT.
			if (!android.view.KeyEvent.metaStateHasNoModifiers(@event.getMetaState() & ~(android.view.KeyEvent
				.META_SHIFT_MASK | android.view.KeyEvent.META_ALT_MASK)))
			{
				return false;
			}
			// If there is a current selection, delete it.
			if (deleteSelection(view, content))
			{
				return true;
			}
			// Alt+Backspace or Alt+ForwardDelete deletes the current line, if possible.
			if (@event.isAltPressed() || getMetaState(content, META_ALT_ON) == 1)
			{
				if (deleteLine(view, content))
				{
					return true;
				}
			}
			// Delete a character.
			int start = android.text.Selection.getSelectionEnd(content);
			int end;
			if (isForwardDelete || @event.isShiftPressed() || getMetaState(content, META_SHIFT_ON
				) == 1)
			{
				end = android.text.TextUtils.getOffsetAfter(content, start);
			}
			else
			{
				end = android.text.TextUtils.getOffsetBefore(content, start);
			}
			if (start != end)
			{
				content.delete(System.Math.Min(start, end), System.Math.Max(start, end));
				return true;
			}
			return false;
		}
Ejemplo n.º 2
0
		/// <summary>
		/// You can call this function yourself to have the scroll view perform
		/// scrolling from a key event, just as if the event had been dispatched to
		/// it by the view hierarchy.
		/// </summary>
		/// <remarks>
		/// You can call this function yourself to have the scroll view perform
		/// scrolling from a key event, just as if the event had been dispatched to
		/// it by the view hierarchy.
		/// </remarks>
		/// <param name="event">The key event to execute.</param>
		/// <returns>Return true if the event was handled, else false.</returns>
		public virtual bool executeKeyEvent(android.view.KeyEvent @event)
		{
			mTempRect.setEmpty();
			if (!canScroll())
			{
				if (isFocused())
				{
					android.view.View currentFocused = findFocus();
					if (currentFocused == this)
					{
						currentFocused = null;
					}
					android.view.View nextFocused = android.view.FocusFinder.getInstance().findNextFocus
						(this, currentFocused, android.view.View.FOCUS_RIGHT);
					return nextFocused != null && nextFocused != this && nextFocused.requestFocus(android.view.View
						.FOCUS_RIGHT);
				}
				return false;
			}
			bool handled = false;
			if (@event.getAction() == android.view.KeyEvent.ACTION_DOWN)
			{
				switch (@event.getKeyCode())
				{
					case android.view.KeyEvent.KEYCODE_DPAD_LEFT:
					{
						if ([email protected]())
						{
							handled = arrowScroll(android.view.View.FOCUS_LEFT);
						}
						else
						{
							handled = fullScroll(android.view.View.FOCUS_LEFT);
						}
						break;
					}

					case android.view.KeyEvent.KEYCODE_DPAD_RIGHT:
					{
						if ([email protected]())
						{
							handled = arrowScroll(android.view.View.FOCUS_RIGHT);
						}
						else
						{
							handled = fullScroll(android.view.View.FOCUS_RIGHT);
						}
						break;
					}

					case android.view.KeyEvent.KEYCODE_SPACE:
					{
						pageScroll(@event.isShiftPressed() ? android.view.View.FOCUS_LEFT : android.view.View
							.FOCUS_RIGHT);
						break;
					}
				}
			}
			return handled;
		}