Articles of android input method

如何在没有“辅助function”权限的情况下检测输入法选取器可见性

我正在向用户显示输入法选择器,并且popup选择器: InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); im.showInputMethodPicker(); 现在,如果用户解雇了选择器(例如通过点击选择器外部),我想知道,发生了这种情况并做了一些动作(比如显示通知)。 我知道在一个Activity中我可以用脏方法检查根布局的焦点,我知道使用Accessibility权限我可以检查该系统对话框是否有焦点。 问题是我正在运行一项服务,我需要检测IME选择器是否显示,即使我不在我的应用程序(例如第三方应用程序,甚至Android键盘设置)中,我也find了辅助function许可有点混淆用户因此我宁愿不诉诸于此并find另一种方式。 还有另一种方法吗?

使用customview获取输入文本而不使用edittext android

我创建了customview。 每当用户双击视图时,它应显示键盘,用户可以绘制新文本。 Holder是一个扩展视图的自定义视图。 但它正在显示键盘。 如何获取文字? public Holder(Context context, AttributeSet attrs) { super(context, attrs); Log.e(TAG,”EXE”); imm = (InputMethodManager) context. getSystemService(Context.INPUT_METHOD_SERVICE); public boolean onDoubleTap(MotionEvent e) { View view = Holder.this.getRootView(); imm.showSoftInput(view, InputMethodManager.SHOW_FORCED); // imm.showSoftInput(Holder.this, InputMethodManager.SHOW_FORCED); not working

如何在输入法的输入区域中使用自定义字体?

我们正在开发一个应用程序,我们需要在EditText使用自定义字体(从应用程序资产加载的Typeface )。 Android输入法docs说明如下: 当输入焦点移入或移出可编辑的文本字段时,Android会根据需要显示或隐藏输入法(例如屏幕键盘)。 系统还会决定UI和文本字段在输入方法上方的显示方式。 例如, 当屏幕上的垂直空间受到约束时,文本字段可能会填充输入方法上方的所有空间。 这是大胆的部分让我们绊倒。 短语“文本字段可能填充…”似乎具有误导性,因为使用的文本字段不是我们使用自定义字体设置的EditText 。 ( 注意:到目前为止,答案都解释了如何在EditText 中设置自定义字体 。 我们已经在EditText 中设置了自定义字体。请在回答之前仔细阅读问题。)这是隐藏输入法的屏幕截图: 这是软键盘显示和垂直空间受限时会发生的情况: 如您所见,输入法上方文本字段中的字体不是我们的自定义字体(我猜它是系统的默认Roboto字体)。 对于我们尝试作为输入法的每个软键盘都会发生这种情况。 我想强调的是,当空间受到约束时,键盘上方的这个视图是由系统内部生成的,而不是由我们的任何代码生成的。 主要问题是:是否有一种方法(如果是这样,它是什么?)来控制这种(缺乏更好的术语)代理视图的外观 – 至少让它使用我们的自定义字体? 如果我们还可以控制键盘上方整个代理区域的布局和外观(包括“完成”按钮),这将是一个额外的好处。 我们使用此线程中描述的技术的变体来使我们的活动使用与系统中设置的区域不同的区域设置,但是活动的区域设置显然未在此处应用。 (如果是的话,按钮会在左侧,并且会显示“בוצע”,如果我将设备的区域设置更改为希伯来语,就会发生这种情况。[编辑:我可以通过使用android:imeActionLabel属性获取正确的按钮标签EditText 。但是,我不知道如何控制布局方向性。]) 编辑每个请求,这是我如何构建我的对话框(从DialogFragment摘录的相关部分): public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dlg = new Dialog(getActivity(), android.R.style.Theme_Holo_Light_Dialog_NoActionBar); dlg.setContentView(R.layout.edit_note_dialog); mAnimator = (ViewAnimator) dlg.findViewById(R.id.animator); final Typeface hebrew = SystemData.getHebrewFont(); mNoteEditor = (EditText) dlg.findViewById(R.id.note_field); mNoteEditor.setTypeface(hebrew); […]

Android:WebView / BaseInputConnection中的Backspace

Android(4.2)中的软键盘退格有问题。 我在WebView(CodeMirror)中有一个自定义编辑器,它在内部使用空的 。 似乎退格不是由Android系统发送的,除非它认为有一些文本。 我已经覆盖了WebView onCreateInputConnection以试图减弱软输入: @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { Log.d(“CustomWebView”, “onCreateInputConnection(…)”); BaseInputConnection connection = new BaseInputConnection(this, false); outAttrs.inputType = InputType.TYPE_NULL; outAttrs.imeOptions = EditorInfo.IME_ACTION_NONE; outAttrs.initialSelStart = -1; outAttrs.initialSelEnd = -1; return connection; } 但是,这不起作用,甚至onKeyUp也没有调用退格。 如何强制软键盘始终发送退格?

如何确定Android中的当前IME?

我有一个应用程序,我想警告用户,如果他们没有使用默认的Android软键盘。 (即他们使用Swype或其他东西)。 如何查看当前选择的输入法?

Android长按自定义键盘popup键盘

我有自定义Android键盘: public class CustomKeyboard extends Keyboard{…} public class CustomKeyboardView extends KeyboardView{…} public class CustomKeyboardIME extends InputMethodService implements KeyboardView.OnKeyboardActionListener{…} 在某些键上,我有popupKeyboard和popupCharacters : XML / key_popup.xml: 但是当我长按“0”键popup“)”显示时,它会一直停留在那里,直到我按下“X”按钮或“)”字符。 它看起来像这样: 而且我希望它只在我按住手指时打开。 像三星或HTC键盘上的东西: 有人能帮助我吗? 编辑是否至少可以更改此popup窗口的外观? 我希望它具有与我制作的整个键盘相同的背景和键

Android显示软键和showSoftInput无法正常工作?

我创建了一个简单的应用程序来测试以下function。 当我的活动启动时,需要在软键盘打开的情况下启动它。 我的代码不起作用?! 我已经尝试了清单中的各种“状态”设置和InputMethodManager(imm)代码中的不同标志。 我已将该设置包含在AndroidManifest.xml中,并在唯一活动的onCreate中显式调用。 …主要布局(main.xml)…… ……和代码…… public class StudyImeActivity extends Activity { private EditText mEditTextStudy; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mEditTextStudy = (EditText) findViewById(R.id.edit_study); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mEditTextStudy, InputMethodManager.SHOW_FORCED); } }

即使连接了硬件键盘,也显示软键盘

有没有办法显示连接USB键盘的软件键盘(在我的情况下是RFID阅读器)? 我试图使用InputManager强制显示它(带有这些或类似的参数),但没有运气 ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 重要提示 – 我知道状态/系统栏中有一个按钮可以显示它,但用户看不到此按钮(Kiosk应用程序)。

Android – 获取键盘按键

我想要按下软键盘的任何键。 我不想在我的Activity中使用EditView或TextView,必须从我的Activity中的扩展View处理该事件。 我刚试过这个: 1)重写onKeyUp(int keyCode, KeyEvent event) Activity方法。 这不适用于softkeybord它只是抓住几个硬键盘。 2)创建我的OnKeyListener并在我的View中注册包含已注册且正在工作的OnTouchListener 。 这与softkeyboar完全不兼容。 3)覆盖onKeyUp(int keyCode, KeyEvent event) View方法。 如果我设置我的OnKeyListener,如果我没有设置它,这根本不起作用。 4)使用InputMethodManager对象调用方法showSoftInput并将其传递给我的View。 这对于提升键盘既不起作用,实际上我必须调用toggleSoftInput ; 也没有抓住关键事件。 我只在模拟器中测试过,但我认为这已经足够了。 为什么它如此复杂从键盘上取一个简单的键事件?

如何从服务器下载文件并将其保存在Android的SD卡中的特定文件夹中?

我的Android应用程序中有一个要求。 我需要以编程方式下载并保存SD卡的特定文件夹中的文件。 我开发了源代码,这是 String DownloadUrl = “http://myexample.com/android/”; String fileName = “myclock_db.db”; DownloadDatabase(DownloadUrl,fileName); // and the method is public void DownloadDatabase(String DownloadUrl, String fileName) { try { File root = android.os.Environment.getExternalStorageDirectory(); File dir = new File(root.getAbsolutePath() + “/myclock/databases”); if(dir.exists() == false){ dir.mkdirs(); } URL url = new URL(“http://myexample.com/android/”); File file = new File(dir,fileName); long startTime = […]