gpt4 book ai didi

android - 文本选择弹出窗口?

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:49 26 4
gpt4 key购买 nike

我想在用户选择 EditText 中的文本时显示弹出窗口。

这是我想要做的:(来自 Google 文档应用程序的屏幕截图)

我还想在该弹出窗口中添加自定义操作。

关于如何实现这一点有什么想法吗?

编辑:我特别想要一个 float 弹出窗口,就像屏幕截图中显示的那样,而不是 ActionMode,因为应用栏中显示了有值(value)的信息。

我知道我可以让 Action 模式将屏幕内容推送到它下面。但我真的需要一个文本选择弹出窗口。

最佳答案

让我们看看如果您为给定的 textView 设置 textIsSelectable 属性 true 时您将获得的默认行为。

onLongPressTextView 你会得到这个 enter image description here

根据 android 的 API 级别,情况可能会有所不同,

现在让我们稍微定制一下,

我假设您将使用 support library v7,所以为 ToolBar 做了一些事情。

请确保您的应用程序主题具有包含此元素的样式。

    <item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="actionModeCloseDrawable">@drawable/ic_done_white_24dp</item> // this drawable can be changed depending on what you want

contextual_action_mode_test_one_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/ContextualActionModeTestOneActivity_add"
android:icon="@android:drawable/ic_input_add"
android:title="Add"
android:titleCondensed="Add"
app:showAsAction="ifRoom|withText" />

<item
android:id="@+id/ContextualActionModeTestOneActivity_search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
android:titleCondensed="Search"
app:showAsAction="ifRoom|withText" />

<item
android:id="@+id/ContextualActionModeTestOneActivity_sort"
android:icon="@android:drawable/ic_menu_sort_by_size"
android:title="Sort"
android:titleCondensed="Sort"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/ContextualActionModeTestOneActivity_help"
android:icon="@android:drawable/ic_menu_help"
android:title="Help"
android:titleCondensed="Help"
app:showAsAction="ifRoom|withText" />
</menu>

ContextualActionModeTestOneActivity.java

public class ContextualActionModeTestOneActivity extends AppCompatActivity {

private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contextual_action_mode_test_one);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_custom_toolbar);
setSupportActionBar(toolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

initializeUI();
}

private void initializeUI() {
textView = (TextView) findViewById(R.id.ContextualActionModeTestOneActivity_textView);
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
startActionMode(new ActionBarCallBack());
return true;
}
});


}


class ActionBarCallBack implements android.view.ActionMode.Callback{

@Override
public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
mode.setTitle("Do it");
getMenuInflater().inflate(R.menu.contextual_action_mode_test_one_activity, menu);
return true;
}

@Override
public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) {
return false;
}

@Override
public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) {
switch(item.getItemId()){
case R.id.ContextualActionModeTestOneActivity_add:
Toast.makeText(getBaseContext(), "add this text somewhere ", Toast.LENGTH_LONG).show();
mode.finish(); // Automatically exists the action mode, when the user selects this action
break;
case R.id.ContextualActionModeTestOneActivity_search:
Toast.makeText(getBaseContext(), "search this text ", Toast.LENGTH_LONG).show();
break;
case R.id.ContextualActionModeTestOneActivity_sort:
Toast.makeText(getBaseContext(), "sort", Toast.LENGTH_LONG).show();
break;
case R.id.ContextualActionModeTestOneActivity_help:
Toast.makeText(getBaseContext(), "help with this", Toast.LENGTH_LONG).show();
break;
}
return false;
}

@Override
public void onDestroyActionMode(android.view.ActionMode mode) {

}
}
}

长按 textView 这就是您将看到的内容

enter image description here

关于android - 文本选择弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35097513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com