gpt4 book ai didi

android - 使用没有edittext android的customview获取输入文本

转载 作者:可可西里 更新时间:2023-11-01 18:46:04 26 4
gpt4 key购买 nike

我已经创建了自定义 View 。每当用户双击 View 时,它应该显示键盘并且用户可以绘制新文本。

Holder 是一个扩展 View 的自定义 View 。但它正在显示键盘。如何获取文本?

 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

最佳答案

这是一个自定义的FrameLayout,当你点击它时,它会显示soft-keyboard,你可以输入任何东西,当你按下回车键时,它会显示一个toast文本与您输入的内容,我希望它能给您带来想法:

public class MyCustomFrameLayout extends FrameLayout {

String mText;
public MyCustomFrameLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyCustomFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyCustomFrameLayout(Context context) {
super(context);
init();
}
@Override
public boolean onCheckIsTextEditor() {
return true;
}
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
BaseInputConnection fic = new BaseInputConnection(this, false);
outAttrs.actionLabel = null;
outAttrs.inputType = InputType.TYPE_NULL;
outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE;
return fic;
}
public void init(){
setFocusable(true);
setFocusableInTouchMode(true);
mText ="";
setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if((keyCode >= KeyEvent.KEYCODE_A) && (keyCode <= KeyEvent.KEYCODE_Z)) {
mText = mText + (char) event.getUnicodeChar();
return true;
}
else if(keyCode >= KeyEvent.KEYCODE_ENTER){
Toast.makeText(getContext(), "The text is: " + mText , Toast.LENGTH_LONG).show();
return true;
}
}
return false;
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
InputMethodManager imm = (InputMethodManager) getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
}
return true;
}
public String getText(){
return mText;
}
}

关于android - 使用没有edittext android的customview获取输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27717531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com