Я создам приложение, в которое пользователь будет вводить URL-адрес веб-сайта моего приложения. Затем я показываю эту страницу в своем приложении, используя WebView.
Как вы знаете, когда пользователь нажимает любой текст в контексте немного длиннее, появляется курсор Android, тогда мы можем выбрать текст столько, сколько мы хотим.
После выбора мы увидим, что «КОПИРОВАНИЕ, ПОДЕЛИТЬСЯ, ВЫБРАТЬ ВСЕ» и т. Д.
Мой вопрос заключается в том, что, когда пользователь выбирает текст, я хочу показать ему различные варианты. Допустим, «MyCOPY, SendTwitter, SendMessage».
Как я могу это сделать?
Что я до сих пор делал?
Я просто создаю панель в верхней части приложения. Но я не хочу этого.
Вот код:
private WebView view;
private final String TAG = MainActivity.class.getSimpleName();
private ActionMode actionMode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.view = findViewById(R.id.webView);
view.loadUrl("https://stackoverflow.com/questions/28385768/android-how-to-check-for-successful-load-of-url-when-using-webview-loadurl");
view.setWebViewClient(new MyWebViewClient());
Log.d(TAG, view.getUrl());
view.setOnLongClickListener((v) -> {
if (actionMode != null)
return false;
actionMode = startSupportActionMode(actionCallBack);
return true;
});
}
Где startSupportActionMode (actionCallBack) равно
private ActionMode.Callback actionCallBack = new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
actionMode.getMenuInflater().inflate(R.menu.custommenu, menu);
actionMode.setTitle("Choose");
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.example_item_1:
Toast.makeText(MainActivity.this, "Option 1 selected", Toast.LENGTH_SHORT).show();
actionMode.finish();
return true;
case R.id.example_item_2 :
Toast.makeText(MainActivity.this, "Option 2 selected", Toast.LENGTH_SHORT).show();
actionMode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
actionMode = null;
}
};