5

TextWatcher を使用して入力を検証しています。下の画像に示すように、ユーザーに視覚的なフィードバックを提供できるように、赤いヒント画像をクリック可能にしたいと考えています。今まで持っていたのは、無効なデータを入力したときに表示される赤いヒント画像付きの編集テキストです。この赤いヒントをクリック可能にし、ポップアップヒントを図のように表示する方法を知りたいです。

EditText ヒント

これは私がこれまでに持っているコードです、

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("");
    }   
}
4

2 に答える 2

5

EditText最初の機能を取得するには、カスタムを作成する必要があります。

ここで解決

ドローアブルをクリックしたときのポップアップ ビューは、PopupWindow

ここで解決。

于 2012-07-26T09:10:27.510 に答える
3

EditText usernametxt の右側にある複合ドローアブルとして赤いヒント画像を使用すると、非常に簡単です。以下はトリックを行います。

EditText username = (EditText) findViewById(R.id.usernametxt);
username.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_UP) {
            if(event.getRawX() >= username.getRight() - username.getTotalPaddingRight()) {
                // your action for drawable click event

             return true;
            }
        }
        return true;
    }
});

左ドローアブルが必要な場合は、if ステートメントを次のように変更します。

if(event.getRawX() <= username.getTotalPaddingLeft())

同様に、すべての複合ドローアブルに対して実行できます。

username.getTotalPaddingTop()
username.getTotalPaddingBottom()

このメソッド呼び出しは、ドローアブルを含む、その側のすべてのパディングを返します。これは、TextView、Button などでも使用できます。

Android 開発者サイトからの参照については、ここをクリックしてください。

于 2015-03-23T15:15:29.240 に答える