get value of selected text on one tap in a textview - android

How can i get the text selected on one tap from a textview. I want user to have cursor to modify the automatic selection. It's fine if it's easy with edittext, i can make it non-editable.
There shouldn't be any contextual menu. Though there are solutions available but it's not complete and clear. Like when to use spannable, disabling contextual menus.

Related

How can I make the copy menu appear in a TextView upon the initial selection of text?

Similar questions, such as How do I enable standard copy paste for a TextView in Android?, have appeared on StackOverflow in the past and the standard answer is to add the android:textIsSelectable property to your TextView. This allows the text to be selected after short or long pressing but the copy menu does not immediately appear. Instead, you need to lift your finger and then long press a second time on the selected text in order for this menu to appear.
Is it possible to make it so that the copy menu appears after the initial text selection instead of after the second long press?

How to start contextual action bar for text view programmatically with default opions copy and select all?

Is there any way to programmatically start contextual action bar associated with a text view, on a button click? It should contain default options of copy/select all as well.
Basically, I want to show the selection handles in my text view and the android default copy/select all option in action bar, on a button click (instead of long click/double tap).
What I tried so far:
tried using the setCustomActionModeCallback() api, but problem here, is user need to long press/double click the text view for CAB to appear.
Tried using startActionMode() api, but could not find a way to retain default items.. it just opens a new empty CAB.. I know, I can add my custom copy-select all code and make use of this empty CAB, but I want to use the default Android provided one instead of managing it by myself.
Edit; I can't use EditText. The view need to be TextView only and long click will be disabled. I am doing all the above changes by setting TextView as selectable
Select your text manually and then perform a long click:
textView.post(new Runnable() {
#Override
public void run() {
Selection.selectAll((Spannable) tv.getText());
tv.performLongClick();
}
});
Edit:
The problem is that the built-in text selection CAB is private and uses multiple private classes. You'd need to copy a lot of code or access a bunch of methods with reflection to use it.
You could make your own CAB menu but you'd also need the controller handles which is again a lot of code.
A simple solution would be to live with what you have and use my above suggested method. If you want to avoid calling your long click listener you can remove it while calling the cab:
Selection.selectAll((Spannable) tv.getText());
tv.setOnLongClickListener(null);
tv.performLongClick();
tv.setOnLongClickListener(mLongClickListener);
if you want to select text in your text View than there are several approaches that you can follow.
first thing you can do, is set the xml properties of TextView.
android:textIsSelectable = "true"
txtView.setTextIsSelectable(true)
The textIsSelectable flag allows users to make selection gestures in the TextView, which in turn triggers the system's built-in copy/paste controls.
or
android:selectAllOnFocus = true;
setSelectAllOnFocus(boolean)
If the text is selectable, select it all when the view takes focus. and you can set the focus on click of your Button. using RequestFocus() method.
for more detail study you can reference to this Link. you will find all your Required task done.
http://developer.android.com/reference/android/widget/TextView.html[http://developer.android.com/reference/android/widget/TextView.html][1]
thank you

Default text in the serach bar with AutoCompleteTextView

I'm using the AutoCompleteTextView to allow users to search a from a list of countries. I want to have some default text preloaded in the search bar before the user clicks on it, such as "Search" or "Find Nearest Country". Is it possible to do this? If so how?
Right now, the app opens directly into the search box with the keyboard pulled up. Rather, I want the users to click on the bar before searching.
http://developer.android.com/reference/android/widget/AutoCompleteTextView.html
A TextView's hint seems to be exactly what you need. See android:hint for the XML attribute or setHint() for the corresponding Java method.
To prevent the keyboard from popping as soon as your activity is entered, you should set the android:windowSoftInputMode attribute in the activity declaration to stateHidden.

Customize the ActionMenu of an EditText

I want to provide simple formatting buttons for an EditText, for example, a button that inserts <strong></strong> if no text was selected and wraps the selected text in <strong> tags otherwise.
I am using the Support Library v7 with ActionBarCompat. I managed to start a custom ActionMode upon focus change of my EditText. However, when I long-touch on text in that EditText, another ActionMode menu opens with copy/paste/... buttons, which presumably is Android's default behaviour. How can I suppress this second menu, but still let the user select portions of the EditText's content?
Alternatively I would like to be able to customize the default menu using setCustomSelectionActionModeCallback(...) but using the Support library. How could I do that?
Unfortunately, TextView and EditText don't provide an API for you to use ActionBarCompat classes. But, you should be able to override this behavior.
Set a custom onLongClickListener in which you set your own state information in your activity and call supportInvalidateOptionsMenu(). Be sure to return 'true' from your OnLongClickListener.onLongClick() method, indicating you consumed the click. Then, in your onPrepareOptionsMenu you can add whatever new menu items you wish for your custom action bar. I would recommend not using TextView context menu items IDs 'selectAll', 'cut', 'copy' and 'paste', just to be on the safe side.

How to grey out spinner in Android?

I use two Spinner in my App. One of them is initially disabled because I need the user to select something in the first spinner to load the content of the second one.
I would like to change the design of the second spinner to show the user that the spinner is not active, eg. grey the spinner out. How can I achieve this?
If this is not possible how would you change this dialog to make it clear to the user that she has to select something in the first spinner?
The Spinner doesn't gray out when disabled, it's a bug that we fixed in FroYo (next version of Android.)
Further to setting as disabled, I don't know any other way to grey out.
Hide the second spinner until the first has no selection.
Or until it's in disabled state, the first visible option should show text related to the required selection eg: Select a Continent first

Categories

Resources