EditText上禁用软键盘,但仍然允许复制/粘贴

嗨,我正在做的自定义拨号程序,所以我创造我自己的输入衰减。 问题是我怎么禁用的EditText,但仍然允许剪切/复制/粘贴?股票拨号器可以做到这一点。 我已经试过了 android:focusable="false" 但禁用剪切/复制(仍然可以粘贴虽然)。 我也试过禁用 inputType 编程它可禁止所有
myEditText.setInputType(InputType.TYPE_NULL); //Can't cut/copy/paste
从清单中禁用它也不起作用:
android:configChanges="orientation|keyboardHidden" //Keyboard still popped up
解决的办法?谢谢
本文地址 :CodeGo.net/558093/ 
------------------------------------------------------------------------------------------------------------------------- 
1.  试试这个
 EditText et = ... // your EditText
et.setKeyListener(null) //makes the EditText non-editable so, it acts like a TextView.
无需子类。这一点,让你的EditText非是,EditText上仍然有它自己的光标之间的主要区别-你可以选择文本,等它所做的就是从弹出自己的软键盘抑制输入法。 
2.  下班后和时间的研究,我终于找到了一个解决方案,它适用于所有的API版本。希望这可以保存 如果你正在开发的API>=11,解决方法很简单 CodeGo.net,可以: 1)在EditText上的xml文件中添加两个属性如下
android:inputType="none"
android:textIsSelectable="true"
或 2)通过编程做以下
myEditText.setInputType(InputType.TYPE_NULL);
myEditText.setTextIsSelectable(true);
就大功告成了。 如果你想满足API <11为好,我发现,有没有办法从弹出了,如果你想选择的文本复制粘贴目的禁用键盘。设置为false将禁用键盘,但它并不能帮助它禁止你的能力来选择文本了。任何其他解决方案,我发现在StackOverflow的一切要么不工作或禁用文本选择的了。 一个丑陋的方式来解决,这是因为这样的.. 首先,在EditText上的xml文件中添加这个属性
android:editable="false"
是的,这已被弃用,但需要作出的EditText在API版本<11不可编辑。 接下来,我们需要尽快隐藏键盘,因为它显示出来,这样我们就可以继续,而不键盘挡住了路选择文本。 用下面这段代码来检测键盘显示出来(从溶液中获得,它隐藏
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
{
 final View activityRootView = findViewById(R.id.activityRoot);
 activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
 @Override
  public void onGlobalLayout() {
   Rect r = new Rect();
   //r will be populated with the coordinates of your view that area still visible.
   activityRootView.getWindowVisibleDisplayFrame(r);
   int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
   if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
   //Hide the keyboard instantly!
   if (getCurrentFocus() != null) 
   {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
   }
   }
   }
  });
}
它适用于我的情况。虽然你可以看到键盘显示在一瞬间(这是丑陋的部分),但我想不出任何其他方式得到这个工作在写作。如果你有一个更好的解决方案,请留下 知道太多,如果这样可以保存:)
本文标题 :从EditText上禁用软键盘,但仍然允许复制/粘贴?
本文地址 :CodeGo.net/558093/ 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值