nit*_*agi 20 android android-edittext

我正在开发Android智能电视应用程序:
在一个view有自定义键盘和EditText.
应用程序启动时焦点转到键盘.
期望:
editText.我该如何在里面展示这种效果EditText?
你可以尝试这样的事情:
editText.setText(text);
editText.setPressed(true);
editText.setSelection(editText.getText().length()); // moves the cursor to the end of the text
Run Code Online (Sandbox Code Playgroud)
然而,这种方法有两个问题:
光标不会闪烁。闪烁的逻辑位于 Editor 类中,无法覆盖。它要求 EditText 获得焦点,并且窗口内只能同时获得 1 个视图 - 在您的情况下,这将是键盘按钮之一。
/**
* @return True when the TextView isFocused and has a valid zero-length selection (cursor).
*/
private boolean shouldBlink() {
if (!isCursorVisible() || !mTextView.isFocused()) return false;
...
}
Run Code Online (Sandbox Code Playgroud)这就是本机键盘/IME 如此工作的原因。它是一个单独的窗口,当用户点击不同窗口(键盘/IME)中的视图时,它允许 EditText 保持焦点并具有闪烁光标功能。
话虽这么说,上面的问题有一个解决方法 - 当你不再需要它时,请确保将 shouldBlink 设置为 false,否则肯定会发生内存泄漏或崩溃:
private void blink() {
if (shouldBlink) {
editText.setText(editText.getText());
editText.setPressed(true);
editText.setSelection(editText.getText().length());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (shouldBlink) {
blink();
}
}
}, 500);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您为该字段设置背景,则会发生这种情况。如果要解决此问题,请将设置cursorDrawable为@null。
您应该添加textCursorDrawable使用cursorVisible。
引用将在插入光标下绘制的可绘制对象。
android:cursorVisible="true"
android:textCursorDrawable="@null"
Run Code Online (Sandbox Code Playgroud)
在您的布局 xml 文件中,在您的编辑文本中添加以下行:
<requestFocus/>
Run Code Online (Sandbox Code Playgroud)
这会将光标置于您的 editText 小部件中。
希望能帮助到你。
你可以这样做.我希望/我认为你有一个你已经创建的按钮的布局,你可以为这个布局设置一个焦点监听器,在onFocusChange方法中你可以检查是否(layout.hasFocus())和做这个...
例如,如果你的edittext被命名为et,你可以将其设置为:
et.setActivated(true);
et.setPressed(true);
Run Code Online (Sandbox Code Playgroud)
我有一个小例子代码,你有两个编辑文本
et2.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(et2.hasFocus()){
//et1.setCursorVisible(true);
et1.setActivated(true);
et1.setPressed(true);
}
}
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
| 归档时间: |
|
| 查看次数: |
19264 次 |
| 最近记录: |