android 键盘 能复制,android – 从EditText中禁用软键盘,但仍允许复制/粘贴?
經過幾個小時的研究,我終于找到了適用于所有API版本的解決方案。希望這可以節省某人的時間。
如果您正在開發API> = 11,解決方案很簡單:
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。 接下來,我們需要在顯示屏幕時立即隱藏鍵盤,以便我們可以繼續選擇文本而不用鍵盤阻止。 使用以下代碼檢測鍵盤顯示(從http://stackoverflow.com/a/9108219/1241783獲得的解決方案),并立即隱藏。
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);
}
}
}
});
}
它適用于我的情況。雖然你可以看到鍵盤顯示在一個分秒(這是丑的一部分),但我不能想到任何其他方式讓這個工作在寫作時。如果您有更好的解決方案,請發表評論!
讓我知道,如果這樣可以節省某人的時間:)
總結
以上是生活随笔為你收集整理的android 键盘 能复制,android – 从EditText中禁用软键盘,但仍允许复制/粘贴?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《森林之子》成 Steam 最热愿望单游
- 下一篇: 华为将升级鸿蒙,华为将弃用安卓?Mate