当您在Android上长按某个物品时,会出现一个上下文菜单。我想为系统中所有的TextViews
添加一些内容到这个上下文菜单中。
例如,系统使用复制和粘贴来实现此功能。我想添加自己的内容,并让它出现在每个应用程序中。
当您在Android上长按某个物品时,会出现一个上下文菜单。我想为系统中所有的TextViews
添加一些内容到这个上下文菜单中。
例如,系统使用复制和粘贴来实现此功能。我想添加自己的内容,并让它出现在每个应用程序中。
在您的android-manifest.xml文件中添加intent-filter:
<activity
android:name=".ProcessTextActivity"
android:label="@string/process_text_action_name">
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.process_text_main);
CharSequence text = getIntent()
.getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
// process the text
}
关于medium的更多信息,请参见文章。
感谢用户YungBlade
他在ru.stackoverflow.com上的回答。
嗯,我不确定你是否可以像示例中那样扩展内置类型。Ruby 可以这样做(我的 Java 知识不够深入)。
但是,你可以从 TextView 派生出自己的 MyTextView。然后将所有布局中的 TextView 替换为它:
<TextView android:id="@+id/TextView01" />
到
<com.mydomain.mypackage.MyTextView android:id="@+id/TextView01" />
自动更改所有这些字段的类型。
然后您需要覆盖所有构造函数(特别是TextView(Context context, AttributeSet attrs)
)。
之后,所有布局填充器(自动或手动)都将轻松创建此类型。
然后,您可以根据需要创建/注册上下文菜单回调。
这可能有些hacky,但您可以在应用程序/活动级别捕获菜单键,检查当前活动视图是否为文本输入视图,然后构建并显示自己的自定义弹出菜单。
虽然有点棘手,但是这是可能的。
如果您创建/填充TextView,请在其上调用setFocusable(false),然后将其设置为活动视图,Activity仍将接收关键事件。您需要手动转发所有这些事件(轨迹球、触摸、键)到您的View树中。(在您的"onKeyDown"函数中,您必须为顶层View调用相应的"onKeyDown"方法)您有效地需要捕获'焦点'的概念,并将其分配给正确的视图。
尽管有些不美观,但它可能会给您带来所需的结果。
然而,这只适用于您自己的应用程序。之前的答案正确,无法在整个手机上实现。
在选择菜单中点击分享按钮(三个点的树形图标)。然后您应该选择您自己的应用程序。不幸的是,它不能用于输入字段内容。