2015-06-25 19 views
7

Mam edittext, który pobiera wartości od użytkownika. Chcę dodać opcję, która pozwala użytkownikowi wybrać różne opcje z rozwijanej listy po kliknięciu editekstu. Czy ktoś ma pomysł, jak to zrobić?edittext android z rozwijaną listą

Jest to kod EditText:

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/dish_quantity" 
    android:layout_below="@+id/dish_name" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:hint="Quantity" /> 

chcę, żeby wyglądać tak:

enter image description here

+0

która nazywa się AutoCompleteTextView w Androidzie –

Odpowiedz

2

activity_main.xml

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="15dp" 
     android:text="@string/what_is_your_favourite_programming_language_" /> 

    <AutoCompleteTextView 
     android:id="@+id/autoCompleteTextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/textView1" 
     android:layout_marginLeft="36dp" 
     android:layout_marginTop="17dp" 
     android:ems="10" 
     android:text=""> 

     <requestFocus /> 
    </AutoCompleteTextView> 

</RelativeLayout> 

MainActivity.java

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.Color; 
import android.view.Menu; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 

public class MainActivity extends Activity { 
    String[] language ={"C","C++","Java",".NET","iPhone","Android","ASP.NET","PHP"}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //Creating the instance of ArrayAdapter containing list of language names 
      ArrayAdapter<String> adapter = new ArrayAdapter<String> 
      (this,android.R.layout.select_dialog_item,language); 
     //Getting the instance of AutoCompleteTextView 
      AutoCompleteTextView actv= (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView1); 
      actv.setThreshold(1);//will start working from first character 
      actv.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView 
      actv.setTextColor(Color.RED); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 
+0

nie jest autocompletetextview w widoku listy jak tylko wybrana wartość tam jest –

+0

Niestety, nie dostałem. Proszę opracuj. –

+0

sprawdź pytanie i edytuj je –

15

myślę, że to jest twój wymaganie:

wystarczy wykonać ten przykład: Xml: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<AutoCompleteTextView 
    android:id="@+id/languages" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"></AutoCompleteTextView> 
</LinearLayout> 

aktywny: -

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 

public class MainActivity extends Activity { 

    String[] languages = { "C","C++","Java","C#","PHP","JavaScript","jQuery","AJAX","JSON" }; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
       //Create Array Adapter 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.select_dialog_singlechoice, languages); 
       //Find TextView control 
     AutoCompleteTextView acTextView = (AutoCompleteTextView) findViewById(R.id.languages); 
     //Set the number of characters the user must type before the drop down list is shown 
       acTextView.setThreshold(1); 
       //Set the adapter 
     acTextView.setAdapter(adapter); 
    } 
} 

Demo: -

enter image description here

+0

Po prostu nie chcę wpisywać edytora tekstu Chcę, aby uzyskać wartość z listy, kiedy klikam na tekst edycji ta lista zostanie otwarta. Tak czy inaczej to jest to –

+0

to jest to samo co twoje wymagane prawo? – RaMeSh

+0

Przede wszystkim Twój selektor dat nie jest edittext, dlatego chcesz edytować tekst. – RaMeSh