2017-01-05 2 views
2

Ceci est l'application que je développe. J'utilise AutoCompleteTextView.Comment mettre un x ou annuler dans AutoCompleteTextView Android

This is the app

Je veux mettre un X à l'intérieur. Pouvez-vous m'aider à ajouter cela?

Voici mon code

MainActivity.class

package com.example.guidemo3; 

import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    AutoCompleteTextView autocomplete; 

    String[] stateName = { "France", "Philippines","Brazil", 
     "Italy", "United States"}; 

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

     autocomplete = (AutoCompleteTextView)    
     findViewById(R.id.autoCompleteTextView1); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String> 
     (this,android.R.layout.simple_dropdown_item_1line, stateName); 

     autocomplete.setThreshold(1); 
     autocomplete.setAdapter(adapter); 

     autocomplete.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       String stateName = autocomplete.getAdapter().getItem(position).toString(); 

       // Put selected state to intent. 
       Intent intent = new Intent(MainActivity.this, NextActivity.class); 
       intent.putExtra("selectedState", stateName); 

       startActivity(intent); 
      } 
     }); 
     TextView cancelButton = (TextView) findViewById(R.id.cancelButton); 
     cancelButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       autocomplete.setText(""); 
      } 
     }); 


    } 
} 

activity.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:focusableInTouchMode="true" 
    > 

    <LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/search_view_border" 
    android:orientation="horizontal"> 

    <AutoCompleteTextView 
     android:id="@+id/autoCompleteTextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:ems="20" 
     android:hint="Search" 
     android:padding="10dp"> 

     <requestFocus/> 
    </AutoCompleteTextView> 

    <TextView 
     android:id="@+id/cancelButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" X " 
     android:textColor="#000"/> 
</LinearLayout> 

</RelativeLayout> 
+0

Reportez-vous [ce] (http://stackoverflow.com/questions/12576529/android-how-to-put-cross-icon-on- top-of-the-autocomplete-textview). J'espère que vous allez vous aider –

+0

Je n'utilise pas edittext je n'utilise que AutoCompleteTextView. vérifier mes codes. –

+1

checkout [ce lien] (http://stackoverflow.com/questions/31636591/how-can-i-create-clean-button-in-autocompletetextview) pour nettoyer Button dans AutoCompleteTextView –

Répondre

1

Vous devez mettre un LinearLayout autour de votre AutoCompleteTextView Ensuite, ajoutez votre arrière-plan à cette mise en page Placez un TextView avec un "X" comme texte à l'intérieur de cette mise en page et ajoutez un OnClickListener.

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/search_view_border" 
    android:orientation="horizontal"> 

    <AutoCompleteTextView 
     android:id="@+id/autoCompleteTextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:ems="20" 
     android:background="@android:color/transparent" 
     android:hint="Search" 
     android:padding="10dp"> 

     <requestFocus/> 
    </AutoCompleteTextView> 

    <TextView 
     android:id="@+id/cancelButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=" X " 
     android:textColor="@color/colorPrimaryDark"/> 
</LinearLayout> 

OnClickListener ressemblerait à ceci:

cancelButton = (TextView) findViewById(R.id.cancelButton); 
    cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      autocomplete.setText(""); 
     } 
    }); 
+0

Vous pouvez également utiliser un Drawable au lieu de X. C'est juste un exemple – Erythrozyt

+0

Rien ne se passe. Je mets à jour mes codes. juste vérifier est correct. –