android - 可在 EditText 中绘制的可单击复合图,单击时弹出 View

标签 android android-edittext textwatcher

我正在使用 TextWatcher 来验证我的输入,我希望我的红色提示图像可以点击,这样我就可以为用户提供视觉反馈,如下图所示。到目前为止,我所拥有的是当我输入无效数据时出现红色提示图像的编辑文本。我现在想知道如何使这个红色提示可点击并使弹出提示如图所示。

EditText hint

这是我目前的代码,

public class MainActivity extends Activity implements TextWatcher{

    EditText username,email = null;
    boolean flag=false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);      

        username=(EditText) findViewById(R.id.usernametxt);
        email=(EditText) findViewById(R.id.emailtxt);

        username.addTextChangedListener(this);

        username.setOnTouchListener(new View.OnTouchListener(){
        public boolean onTouch(View view, MotionEvent motionEvent) {
            // your code here...
            if(flag)
            {
                email.setText("Error. . .");
            }
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);                
            return false;
            }
        });

        Button loginbtn = (Button) findViewById(R.id.login);
        loginbtn.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                //Check Validations
                if(username.getText().toString().equalsIgnoreCase(""))
                {
                    username.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.alert, 0);
                    flag=true;
                }
            }
        });

        Button clearbtn = (Button) findViewById(R.id.clear);
        clearbtn.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                username.setText("");
                email.setText("");      
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub      
        username.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
        flag=false;
        email.setText("");
    }   
}

最佳答案

您必须制作自定义 EditText 才能获得第一个功能。

Solved here

单击可绘制对象时的弹出 View 可以使用 PopupWindow

Solved here.

关于android - 可在 EditText 中绘制的可单击复合图,单击时弹出 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665775/

相关文章:

java - 使用默认方法会在 Android 发布版本中引发 AbstractMethorError

java - TextWatcher - 替换字符串的最后一个字符

java - Android 通知在现有 Activity 上打开

android - location 和 currentBestLocation 从哪里来?在 Android 开发指南中(获取用户位置)

java - 使用 GSON 将嵌套 JSON 解析为通用集合

android - 强制重新布局 View 组,包括其所有子项

java - Android EditText 验证

java - Stackoverflow EditText 小部件

Android:如果 EditText 不为空,如何启用我的按钮返回?

android - getText 不可访问