jquery监听pda 按键_PDA(Android系统)EditText获取文本方法及焦点自动跳转问题处理...

在PDA(Android系统)上处理EditText文本获取和焦点跳转问题,使用KeyEvent.KEYCODE_ENTER与EditorInfo.IME_ACTION_DONE结合,实现输入监听。通过设置android:nextFocus*属性解决焦点自动下移问题,防止焦点错误转移。
摘要由CSDN通过智能技术生成

1)PDA(Android系统)上文本获取。

经过多次测试发现,使用addTextChangedListener监听文本根本无法,正常获取到文本。有些情况都不触发。后来发现 使用KeyEvent.KEYCODE_ENTER 加EditorInfo.IME_ACTION_DONE

搭配可以兼顾手动输入,跟按键识别。代码如下:

public class BarCodeEditText extends ClearableEditText {

public interface Callback {

void callback(String t);

}

public BarCodeEditText(Context context) {

super(context);

}

public BarCodeEditText(Context context, AttributeSet attrs) {

super(context, attrs);

}

public BarCodeEditText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

public void afterTextChanged(Callback callback) {

afterTextChanged(InputType.TYPE_CLASS_TEXT,callback);

}

public void afterTextFinish(Callback callback) {

setImeOptions(EditorInfo.IME_ACTION_DONE);

setInputType(InputType.TYPE_CLASS_TEXT);

setOnEditorActionListener(new TextView.OnEditorActionListener() {

@Override

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

String s = v.getText().toString().trim();

if (actionId == EditorInfo.IME_ACTION_DONE) {

callback.callback(s);

return true;

}

return false;

}

});

setOnKeyListener(new OnKeyListener() {

@Override

public boolean onKey(View v, int keyCode, KeyEvent event) {

if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER && !TextUtils.isEmpty(getText().toString())){

callback.callback(getText().toString());

return true;

}

return false;

}

});

}

}

2)PDA(Android系统)焦点会自动往下跳问题。

这个问题开始以为屏蔽其他控件获取焦点,跟主动获取焦点就可以解决。可是怎么都是用着用着就跳了。

后来发现 系统会按照布局从上到下,从左到右的传递focus。可以使用

android:nextFocusUp

android:nextFocusLeft

android:nextFocusRight

android:nextFocusDown

在不同的控件中来回切换。后来试下往自己身上切换发现,竟然直接往自己身上切换就完事了,这应该是正确姿势。代码如下:

————————————————

android:id="@+id/et_barcode"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:textSize="15sp"

android:nextFocusDown="@id/et_barcode"

android:cursorVisible="true"

android:inputType="text|textMultiLine"

android:padding="10dp"

android:gravity="left|center_vertical"

>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值