1

EditText にボタンを配置し、メイン XML の開始コードでボタンを非表示に設定しました。

RelativeLayout android:layout_width="match_parent"
    android:layout_height="wrap_content" android:layout_marginTop="10dp">

    <EditText android:id="@+id/editText1" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:hint="@string/search_prompt"/>

    <Button android:id="@+id/button1" android:layout_width="40dp"
        android:layout_height="wrap_content" android:layout_alignBottom="@+id/editText1"
        android:layout_alignParentRight="true" android:layout_alignParentTop="true"
        android:layout_margin="5dp" android:background="@drawable/search"
        android:onClick="loadWeather" android:visibility="invisible"/>

</RelativeLayout>

EditText が空の場合、EditText にテキストがある場合にのみ Button が表示されるようにする必要があります。

final Button searchButton = (Button) findViewById(R.id.button1);

    final EditText myEditText = (EditText) findViewById(R.id.editText1);
    myEditText.setKeyListener(new KeyListener() {

        public boolean onKeyUp(View arg0, Editable arg1, int arg2, KeyEvent arg3) {
            // TODO Auto-generated method stub
            if(!myEditText.getText().equals("")){
                searchButton.setVisibility(View.VISIBLE);
            }
            return false;
        }

        public boolean onKeyOther(View arg0, Editable arg1, KeyEvent arg2) {
            // TODO Auto-generated method stub
            return false;
        }

        public boolean onKeyDown(View arg0, Editable arg1, int arg2, KeyEvent arg3) {
            // TODO Auto-generated method stub
            return false;
        }

        public int getInputType() {
            // TODO Auto-generated method stub
            return 0;
        }

        public void clearMetaKeyState(View arg0, Editable arg1, int arg2) {
            // TODO Auto-generated method stub

        }
    });

開始時に Button が非表示になりますが、EditText にテキストを入力できなくなりました。EditText はキーボードからの入力を取得しません。このバグを取り除く方法を mo に教えてください。

4

1 に答える 1

0

代わりに使用

myEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence charSequence, int start, int count,      int after) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
        if( count == 0){
            searchButton.setVisibility(View.INVISIBLE);
        }  else{
            searchButton.setVisibility(View.VISIBLE); 
        }
    }

    @Override
    public void afterTextChanged(Editable editable) {
        Log.v(TAG, "afterTextChanged");
    }
});
于 2012-11-08T10:48:52.067 に答える