www.91084.com

GVKun编程网logo

android – 如何在显示Toast后进行edittext自动对焦?(android中toast用法)

15

针对android–如何在显示Toast后进行edittext自动对焦?和android中toast用法这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展AndroidAlertDiaog自定

针对android – 如何在显示Toast后进行edittext自动对焦?android中toast用法这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android AlertDiaog自定义EditText自动弹出软键盘、Android Camera对焦相关基础自动对焦,手动对焦、Android Custom EditText未在ICS中显示光标、Android EditText Style.xml更改FOCUS EditText等相关知识,希望可以帮助到你。

本文目录一览:

android – 如何在显示Toast后进行edittext自动对焦?(android中toast用法)

android – 如何在显示Toast后进行edittext自动对焦?(android中toast用法)

我有一个EditText,读取13位数的条形码.我想要做的是保持屏幕上显示的虚拟键盘和EditText始终具有焦点.下面的代码让我编写条形码并在按下回车键时搜索产品,并且效果很好.但是如果我输入的条形码少于13位数或者我的数据库中不存在条形码类型,我想向用户显示Toast,通知他.显示Toast后,我希望EditText再次自动获得焦点,让用户再次输入条形码.在显示Toast之后,我尝试了requestFocus()方法,但它没有用.始终显示软键盘,但在Toast之后,除非我触摸EditText,否则我无法再次输入EditText.我怎样才能做到这一点?

final EditText procura_codbar = (EditText)
                findViewById(R.id.procurar_produto_codbar);
    procura_codbar.setonKeyListener(new View.OnKeyListener() {

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

            if ((event.getAction() == KeyEvent.ACTION_DOWN)
                    && (keyCode == KeyEvent.KEYCODE_ENTER)) {

                String codbar = procura_codbar.getText().toString();
                if (codbar.length()<13){   
                    Toast.makeText(MainActivity.this,"type a 13 digit barcode",Toast.LENGTH_LONG).show();
                }
                else{
                    if (bdh!=null){
                        bdh.closedb(); bdh.close();
                    }
                    bdh = new DBHelper(MainActivity.this);
                    Log.i("CODBAR",codbar);
                    produto prod_ = bdh.getProduto(codbar);
                    if (prod_!=null){
                        showDialogPreco(prod_);
                        procura_codbar.setText("");
                    }else{
                        Toast.makeText(MainActivity.this,"Product not found",Toast.LENGTH_SHORT).show();
                        procura_codbar.setSelection(codbar.length());
                    }
                }
                procura_codbar.requestFocus();
                procura_codbar.setSelection(codbar.length());
            }

            return false;
        }
    });

这是XML:

<EditText
    android:id="@+id/procurar_produto_codbar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:inputType="textNoSuggestions|number"
    android:textSize="22sp"
    android:maxLength="13"
    android:layout_toRightOf="@+id/tv_procura_codbar" >

    <requestFocus />
</EditText>

提前致谢.

编辑:弄乱这个,我发现了问题.继承人解决方案:

return true;

现在它有效……

解决方法

将此代码放在Toast Message旁边:

Toast.makeText(MainActivity.this,Toast.LENGTH_LONG).show();

procura_codbar.setFocusableInTouchMode(true);
procura_codbar.setFocusable(true);
procura_codbar.requestFocus();
procura_codbar.setSelection(codbar.length());

这对我有用.您还需要删除代码底部的* procura_codbar.requestFocus(); *.

Android AlertDiaog自定义EditText自动弹出软键盘

Android AlertDiaog自定义EditText自动弹出软键盘

自定义AlertDialog
public class BaseAlertDialog implements OnClickListener{

    private AlertDialog mAlertDialog;
    private EditText number_et;
    private Button cancel_btn;
    private Button confirm_btn;
    private Context mContext;
    public BaseAlertDialog(Context context)
    {
        this.mContext = context;
        mAlertDialog = new AlertDialog.Builder(mContext).create();    
        mAlertDialog.show();        
        mAlertDialog.setContentView(R.layout.base_dialog_main);    
        number_et = (EditText) mAlertDialog.findViewById(R.id.number_et);
        cancel_btn = (Button) mAlertDialog.findViewById(R.id.cancel_btn);
        confirm_btn = (Button) mAlertDialog.findViewById(R.id.confirm_btn);
        cancel_btn.setOnClickListener(this);
        confirm_btn.setOnClickListener(this);
        number_et.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                ((InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
                mAlertDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
                mAlertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
                
            }
        });
    }
    
    private DialogNumber mDialogNumber;
    

    public DialogNumber getmDialogNumber() {
        return mDialogNumber;
    }

    public void setmDialogNumber(DialogNumber mDialogNumber) {
        this.mDialogNumber = mDialogNumber;
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.cancel_btn:
            mAlertDialog.dismiss();
            break;
        case R.id.confirm_btn:
            if (number_et.getText().length() != 0) {
                mDialogNumber.callBack(number_et.getText().toString());
                mAlertDialog.dismiss();
            }else{
                Toast.makeText(mContext, " 值不能为空", 2000).show();
            }
            break;
        }
        
    }
    
    public interface DialogNumber{
        void callBack(String string);
    }
}
主MainActivity:
public class MainActivity extends FragmentActivity implements OnClickListener,DialogNumber{

    private Button btn_dialog;
    private TextView number_tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_dialog = (Button) findViewById(R.id.btn_dialog);
        number_tv = (TextView) findViewById(R.id.number_tv);
        btn_dialog.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btn_dialog:
            new BaseAlertDialog(MainActivity.this).setmDialogNumber(MainActivity.this);
            break;

        default:
            break;
        }
    }

    @Override
    public void callBack(String string) {
        
        number_tv.setText(string);
    }
}


Android Camera对焦相关基础自动对焦,手动对焦

Android Camera对焦相关基础自动对焦,手动对焦

原文链接:https://blog.csdn.net/u010126792/article/details/86692877

https://blog.csdn.net/u010126792/article/details/86692877

Android Custom EditText未在ICS中显示光标

Android Custom EditText未在ICS中显示光标

我的应用程序中有一个EditText,它只接收我放在屏幕上的按钮的输入.

为了避免出现软键盘,我有一个自定义的EditText类,如下所示:

public class CustomEditText extends EditText {

    public CustomEditText(Context context) {         
        super(context);
}

    public CustomEditText(Context context,AttributeSet attrs) {
        super(context,attrs);
    }

    @Override
    // disables Keyboard;
    public boolean onCheckIsTextEditor() {
        return false;
    }   

}

这会成功阻止键盘出现,但在ICS中,这种方法也会阻止Cursor出现.

setCursorVisible(true)没有任何效果.

我已经尝试了隐藏软键盘的替代方法,例如使用android:editable =“false”和.setKeyListener(null);但这些解决方案都没有在我的测试中发挥过作用.键盘总是出现.

那么,有没有办法在ICS中返回光标,同时保持onCheckIsTextEditor覆盖原样?

解决方法

你为什么不尝试像这样禁用软键盘

PINLockactivity.java

//text field for input sequrity pin
    txtPin=(EditText) findViewById(R.id.txtpin);
    txtPin.setInputType(
      InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    txtPin.setSelection(txtPin.getText().length());
    txtPin.setTextSize(22);
    txtPin.setSingleLine(true);


    //disable keypad
    txtPin.setonTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v,MotionEvent event) {

              int inType = txtPin.getInputType(); // backup the input type
              txtPin.setInputType(InputType.TYPE_NULL); // disable soft input
              txtPin.onTouchEvent(event); // call native handler
              txtPin.setInputType(inType); // restore input type
                return true; // consume touch even
        }
        });

并为此EditText字段

xml代码是

<EditText android:layout_width="wrap_content" 
            android:id="@+id/txtpin"  
            android:maxLength="4" 
            android:layout_height="37dp" 
            android:gravity="center_horizontal" 
            android:longClickable="false" 
            android:padding="2dp"

            android:inputType="textPassword|number" 
            android:password="true" 
            android:background="@drawable/edittext_shadow" 
            android:layout_weight="0.98" 
            android:layout_marginLeft="15dp">
                <requestFocus></requestFocus>
   </EditText>

这对我来说可以正常使用光标输入安全PIN.

我从按钮而不是键盘输入输入.

Android EditText Style.xml更改FOCUS EditText

Android EditText Style.xml更改FOCUS EditText

下午好,

伙计们,我现在为所有字段style.xml EditText做了一个样式文件,当该字段获得焦点时,我想更改样式.怎么办

解决方法:

您必须为编辑文本的每种状态定义可绘制对象.您在drawables文件夹中创建一个xml文件,该文件定义了编辑文本的所有状态drawable. XML文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@[package:]drawable/drawable_resource"
        android:state_pressed=["true" | "false"]
        android:state_focused=["true" | "false"]
        android:state_hovered=["true" | "false"]
        android:state_selected=["true" | "false"]
        android:state_checkable=["true" | "false"]
        android:state_checked=["true" | "false"]
        android:state_enabled=["true" | "false"]
        android:state_activated=["true" | "false"]
        android:state_window_focused=["true" | "false"] />
</selector>

您为要指定的每个可绘制状态制作了一项.因此,对于state_focused的可绘制对象,您只需执行以下操作:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/myFocusedEditText"
        android:state_focused="true"/>
    <item
        android:drawable="@drawable/myEnabledEditText"
        android:state_enabled="true"/>
</selector>

将此XML文件命名为custom_edit_text.xml,确保它位于drawables文件夹中.
然后,您要做的就是在styles.xml中定义

<style name="my_edit_text">
    <item name="android:drawable">@drawable/custom_edit_text</item>
</style>

祝好运!

关于android – 如何在显示Toast后进行edittext自动对焦?android中toast用法的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android AlertDiaog自定义EditText自动弹出软键盘、Android Camera对焦相关基础自动对焦,手动对焦、Android Custom EditText未在ICS中显示光标、Android EditText Style.xml更改FOCUS EditText等相关内容,可以在本站寻找。

本文标签: