相关疑难解决方法(0)

覆盖Java中的私有方法

正如这里简洁描述的那样,在Java中覆盖私有方法是无效的,因为父类的私有方法是"自动最终的,并且从派生类中隐藏".我的问题主要是学术问题.

如何不允许父级的私有方法被"覆盖"(即,在子类中使用相同的签名独立实现),是不是违反封装?根据封装原则,子类无法访问或继承父级的私有方法.它是隐藏的.

那么,为什么要限制子类使用相同的名称/签名实现自己的方法呢?有没有一个很好的理论基础,或者这只是某种实用的解决方案?其他语言(C++或C#)对此有不同的规定吗?

java inheritance private-methods

58
推荐指数
4
解决办法
8万
查看次数

禁用EditText上下文菜单

我正在EditText为传统的蒙古人做垂直.我通过EditText在旋转的内部嵌入一​​个略微修改的内容来成功实现它ViewGroup.我需要创建一个完全自定义的上下文菜单,因为系统不支持垂直文本,并且在旋转时也不会ViewGroup旋转.所以我想完全禁用系统上下文菜单.

请注意,这与仅仅尝试禁用复制/粘贴/等的这些问题不同:

虽然我没有在模拟器中出现上下文菜单,但我将它出现在我的Android 5.0.2小米手机中.

我试过了:

我对hacks持开放态度,但我需要它能够在各种设备上持续工作.马克·墨菲(下议院人)写了一段时间,早在回答其他用户试图做同样的事情:

我怀疑,即使你拿出一个答案,它也无法在各种设备上运行.设备制造商倾向于为EditText推出自己的"上下文菜单",从而使开发人员尝试将项目添加到该上下文菜单中.我的猜测是,试图阻止该上下文菜单会产生类似的结果.

我运气不好吗?

我现在唯一能想到的就是完全重写TextView并EditText从头开始(好吧,通过修改Android源代码).我知道其他人做了类似的事,但他的代码不是开源的.在我采取这一重大步骤之前,我想尝试在Stack Overflow上寻求更简单的解决方案.

更新:我一直在尝试修改TextView过去两天的源代码,看起来像是一个6个月的项目.这是一大堆相互关联的课程.我需要另一种解决方案,但我没有想法.

MVCE

这是我能想到的最简单的方法来重现问题.我的习惯没有必要EditText.布局有一个EditText替换默认项目Hello World的TextView.我将min API更改为11以避免处理已弃用的方法.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        EditText editText = (EditText) findViewById(R.id.edit_text);
        editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
            @Override
            public boolean onCreateActionMode(ActionMode actionMode, Menu …
Run Code Online (Sandbox Code Playgroud)

android contextmenu android-edittext mongolian-vertical-script

31
推荐指数
4
解决办法
6178
查看次数

EditText:在文本选择处理程序单击事件上禁用粘贴/替换菜单弹出窗口

我的目标是拥有一个EditText没有花哨功能,只有文本选择处理程序更容易移动光标 - 所以没有上下文菜单或弹出窗口.

根据此解决方案,我已通过使用ActionMode Callback事件禁用了文本编辑功能操作栏(复制/粘贴等)的外观.

当文本存在于字段中并且文本中出现单击时,仍然会出现中间中间文本选择句柄(请参见下图).大!我想保持这种行为.我不想要的是单击文本选择句柄本身时出现的"粘贴"菜单.

带粘贴菜单的文本选择手柄

我还通过设置android:longClickable="false"样式XML 禁用了EditText的长按输入.禁用长按可防止单击鼠标(即长按)时出现"粘贴/替换"菜单,但是当在文本中单击鼠标(单触)时,会出现文本选择手柄,并且单击文本选择手柄本身,然后出现"粘贴"菜单选项(当剪贴板中有文本时).这就是我想要阻止的.

从我从源头看到的内容,ActionPopupWindow就是PASTE/REPLACE选项弹出的内容.ActionPopupWindow是公共类android.widget.Editor中私有抽象类HandleView中的受保护变量(mActionPopupWindow)...

如果没有禁用剪贴板服务或编辑Android源代码,有没有办法阻止它显示?我试图定义一个新的样式android:textSelectHandleWindowStyle,并设置android:visibility为gone,但它不起作用(应用程序冻结了一段时间,否则它会显示).

android contextmenu android-widget android-edittext

18
推荐指数
6
解决办法
3万
查看次数

在Android4.X上旋转端口降落后如何避免智能手机中的剪切/复制/粘贴?

我正在努力避免在智能手机中剪切/复制/粘贴(对于平板电脑来说它很好).它在端口模式下很好但是在陆地模式下EditText显示了一个Button Next.选择文本后,下一步按钮将转换为具有复制,剪切和粘贴选项的编辑按钮.

因此,当出现编辑按钮时,有没有办法在旋转后禁用剪切/复制.

我正在关注此链接. 如何禁用从/到EditText的复制/粘贴

这个图像没有文本选择

选择后

android smartphone android-edittext android-4.2-jelly-bean

14
推荐指数
1
解决办法
1341
查看次数

Android - 阻止edittext复制/粘贴,然后双击全选

我正在寻找一个解决方案来禁用长按编辑菜单(复制/粘贴)以及双击select-all功能的edittext框.我已经在这里以类似的方式阅读了这个问题的一些解决方案,但是,需要更进一步.

对于这个应用程序,我要求阻止用户在我的应用程序上使用复制/粘贴功能,并需要一种方法来禁用此功能,该功能将适用于2.3 API以及在较新的平板电脑上使用时.我正在使用NexusOne手机设备和Galaxy平板电脑进行测试.(minSDK为8,目标为10)

目前我正在使用它(例如):edittextPassword.setLongClickable(false); - 禁用弹出编辑菜单,太棒了!

此方法适用于电话设备,以防止编辑菜单弹出.在平板电脑上,这也是长按动作禁用的.然而,平板电脑具有双击的新功能,可以选择所有文本并打开编辑菜单.有没有办法让较旧的API取消/捕获/禁用较新的API功能或阻止双击手势?


更新:使用连接到GestureDetector的setLongClickable(false)和setOnTouchListener的组合(感谢Nikola的建议)我可以从打开中捕获/取消双击和长按编辑菜单.

接下来要弄清楚的是......在三星手机上(Galaxy S,目前还不确定其他设备),当你点击一个字段时,你会得到一个光标和一个浮动光标指针按钮(正确的名字? ).单击此指针按钮是打开编辑菜单的另一种方法.有谁知道如何禁用这个?我唯一的解决方法是使用TextWatcher清除BeforeTextChanges和AfterTextChanges上的剪贴板.这样可以确保即使您进入"复制/粘贴"菜单,也会清除剪贴板并且无需粘贴任何内容.

android copy-paste gesture android-edittext

9
推荐指数
1
解决办法
7054
查看次数

如何禁用Android EditText中的粘贴选项

我有一个EditText不允许粘贴的要求,但应该允许复制。我试过了,setCustomSelectionActionModeCallback但是它禁用了复制选项。

EditText  etxt = (EditText) findViewById(R.id.editText1);
etxt.setCustomSelectionActionModeCallback(new Callback() {

            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                return false;
            }

            public void onDestroyActionMode(ActionMode mode) {                  
            }

            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                return false;
            }

            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

android android-edittext

5
推荐指数
1
解决办法
5645
查看次数

Android XML - 没有换行符的 EditText 自动换行

我对 EditText 的属性有这个愚蠢且看似微不足道的问题。

我试图为 EditText 实现的属性如下:

  • 视图的内容不应包含换行符。它可以是文本、数字、符号,但不能是换行符。

  • 由于上述原因,软键盘不应显示输入按钮。它应该显示类似“发送”或“完成”的内容。

  • 当到达屏幕边缘时,视图的内容不应水平继续。相反,我想包装文本,将其显示在多行上。

我尝试了许多不同的组合,但我无法实现这种组合。

我目前拥有的是这个,它在一个RelativeLayout里面:

    <EditText
        android:id="@+id/comment_box"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_below="@id/preparation_text"
        android:hint="@string/comment_hint"
        android:inputType="textCapSentences|textAutoCorrect|text"
        android:scrollHorizontally="false"
        android:maxLength="400"
        android:imeOptions="actionSend"/>
Run Code Online (Sandbox Code Playgroud)

它实现了 2 of 3。不可能换行,键盘显示“发送”而不是我的回车键,但文本继续在一行上。

更改inputType="text"为"textMultiLine"在多行上正确换行文本,但也会覆盖键盘以始终显示输入按钮。

我在 Internet 上尝试了不同的解决方案,包括设置属性maxLines="4",singleLine="true"以及可能我又忘记了的其他解决方案。

我找不到有效的组合。

xml android android-edittext

5
推荐指数
1
解决办法
911
查看次数

Android:如何在Edittext中完全禁用复制和粘贴功能

我是Android开发领域的新手,最近我遇到了一个棘手的问题.

我试图创建一个Edittext,它不应该允许用户从中复制内容或将内容粘贴到其中.我搜索了很多,发现似乎有两种流行的方式:

第一种方式,在布局文件中设置它:

android:longClickable="false"
Run Code Online (Sandbox Code Playgroud)

第二种方式,以编程方式设置它:

myEdittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        public void onDestroyActionMode(ActionMode mode) {

        }

        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        public boolean onActionItemClicked(ActionMode mode,
                                           MenuItem item) {
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

但我发现无论我选择哪种方式,只能通过长按来禁用edittext区域,这会阻止用户通过长按来访问"全选,复制和粘贴"菜单.但是这两个解决方案都不能阻止用户通过简单地点击光标来访问"粘贴"功能.

所以我的问题是:我怎么能完全阻止用户在某个Edittext中复制和粘贴功能.有人帮忙吗?多谢

android copy-paste android-edittext

4
推荐指数
3
解决办法
1万
查看次数

禁用Xamarin表单输入字段(即Entry)上的复制/粘贴

我正在上禁用xamarin形式的复制/粘贴选项菜单项,我能够禁止使用复制选项IsPassword =真实属性,但这种属性也将转换成正常输入字段密码字段,它不是必需的.

<Entry IsPassword="true" Placeholder="Password" TextColor="Green" BackgroundColor="#2c3e50" />
Run Code Online (Sandbox Code Playgroud)

提前致谢.

xaml xamarin.forms

3
推荐指数
1
解决办法
2293
查看次数

如何从 EditText 禁用复制和粘贴

我正在使用以下代码,但是当光标闪烁并单击该粘贴按钮显示时它不起作用。

edittext.setCustomSelectionActionModeCallback(new ActionMode.Callback() {

    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }

    public void onDestroyActionMode(ActionMode mode) {                  
    }

    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        return false;
    }

    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

我不想隐藏光标。

我该如何解决这个问题?

android android-edittext

3
推荐指数
2
解决办法
4166
查看次数