J'ai un Edittext avec un [v] dessinable sur le côté droit pour le faire ressembler à un fileur. Maintenant, comment puis-je y parvenir? Je définirai l'edittext comme cliquable puis quand je clique dessus, une boîte de dialogue apparaîtra avec une liste (ressemble à une option de spinner)
C'est possible?
<Android.support.design.widget.TextInputLayout
Android:id="@+id/tilAppCategory"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="15dp"
>
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/edtAppCategory"
Android:hint="Category"
Android:fontFamily="sans-serif-light"
Android:textColorHint="@color/textColorHint"
Android:maxLines="1"
Android:gravity="center|start"
Android:inputType="textNoSuggestions"
Android:textColor="@color/colorPrimaryDark"
Android:textSize="14sp"
Android:drawableEnd="@drawable/icon_spinner_down"
Android:focusableInTouchMode="true"
Android:clickable="true"
/>
</Android.support.design.widget.TextInputLayout>
Vous pouvez faire comme ci-dessous dans votre fichier XML: Ici Android:drawableRight
vous pouvez définir l'icône gauche droite en haut et en bas dans EditText
et TextView
dans andorid
<EditText
Android:id="@+id/name"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:inputType="text"
Android:drawableRight="@drawable/ic_menu_share"/>
Pour afficher une liste comme spinner, utilisez AutoCompleteTextView
Android AutoCompleteTextView complète le mot en fonction des mots réservés, donc pas besoin d'écrire tous les caractères du mot.
Android AutoCompleteTextView est un champ de texte modifiable, il affiche une liste de suggestions dans un menu déroulant à partir duquel l'utilisateur ne peut sélectionner qu'une seule suggestion ou valeur.
Android AutoCompleteTextView est la sous-classe de la classe EditText. MultiAutoCompleteTextView est la sous-classe de la classe AutoCompleteTextView.
Tutoriel d'exemple Android AutoCompleteTextView
[~ # ~] ou [~ # ~]
vous pouvez utiliser Android PopupWindow Listview example.
/**
* handle header listview onclick event
*/
private OnClickListener showPopupWindow() {
return new OnClickListener() {
@Override
public void onClick(View v) {
PopupWindow popUp = popupWindowsort();
popUp.showAsDropDown(v, 0, 0); // show popup like dropdown list
}
};
}
/**
* show popup window method reuturn PopupWindow
*/
private PopupWindow popupWindowsort() {
// initialize a pop up window type
popupWindow = new PopupWindow(this);
ArrayList<String> sortList = new ArrayList<String>();
sortList.add("A to Z");
sortList.add("Z to A");
sortList.add("Low to high price");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, Android.R.layout.simple_dropdown_item_1line,
sortList);
// the drop down list is a list view
ListView listViewSort = new ListView(this);
// set our adapter and pass our pop up window contents
listViewSort.setAdapter(adapter);
// set on item selected
listViewSort.setOnItemClickListener(onItemClickListener());
// some other visual settings for popup window
popupWindow.setFocusable(true);
popupWindow.setWidth(250);
// popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.white));
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
// set the listview as popup content
popupWindow.setContentView(listViewSort);
return popupWindow;
}
trouver l'implémentation complète dans les liens ci-dessous:
Vous pouvez y parvenir avec autocompletetextview comme
<AutoCompleteTextView
Android:id="@+id/acType"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:paddingBottom="@dimen/lef_margin"
Android:paddingTop="@dimen/lef_margin"
Android:singleLine="true"
Android:textSize="@dimen/header_text_large"/>
ArrayAdapter arrayAdapter= new ArrayAdapter<>(getContext(), Android.R.layout.simple_list_item_1, dataList);
acType.setAdapter(arrayAdapter);
acType.setInputType(0);
acType.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus)
acType.showDropDown();
}
});
Avec l'aide de la réponse de @ Chetan, j'ai créé ce widget qui peut aider n'importe qui. Veuillez fournir une liste d'options en utilisant
setOptions
méthode
public class DropDown extends AppCompatTextView implements View.OnClickListener {
private ArrayList<String> options = new ArrayList<>();
public DropDown(Context context) {
super(context);
initView();
}
public DropDown(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public DropDown(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}
private void initView() {
this.setOnClickListener(this);
}
private PopupWindow popupWindowsort(Context context) {
// initialize a pop up window type
PopupWindow popupWindow = new PopupWindow(context);
popupWindow.setWidth(this.getWidth());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, Android.R.layout.simple_dropdown_item_1line,
options);
// the drop down list is a list view
ListView listViewSort = new ListView(context);
// set our adapter and pass our pop up window contents
listViewSort.setAdapter(adapter);
// set on item selected
listViewSort.setOnItemClickListener((parent, view, position, id) -> {
this.setText(options.get(position));
popupWindow.dismiss();
});
// some other visual settings for popup window
popupWindow.setFocusable(true);
// popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.white));
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
// set the listview as popup content
popupWindow.setContentView(listViewSort);
return popupWindow;
}
@Override
public void onClick(View v) {
if (v == this) {
PopupWindow window = popupWindowsort(v.getContext());
window.showAsDropDown(v, 0, 0);
}
}
public void setOptions(ArrayList<String> options) {
this.options = options;
}
}
dans votre fichier de mise en page
<com.yourdomian.app.DropDown
style="@style/formDropDown"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="@string/ship_to_address" />
dans votre fichier de style
<style name="formDropDown">
<item name="Android:paddingRight">20dp</item>
<item name="Android:paddingLeft">24dp</item>
<item name="Android:paddingTop">20dp</item>
<item name="Android:paddingBottom">20dp</item>
<item name="Android:textSize">13sp</item>
<item name="Android:background">@drawable/edit_text_background_dark_round</item>
<item name="Android:layout_marginTop">10dp</item>
<item name="Android:elevation">5dp</item>
<item name="Android:drawableRight">@drawable/ic_down_arrow</item>
<item name="Android:gravity">center_vertical</item>
</style>
Dans votre fichier Java
ArrayList<String> options = new ArrayList<>();
options.add("Option 1");
options.add("Option 2");
options.add("Option 3");
options.add("Option 4");
((DropDown)findViewById(R.id.dropdown)).setOptions(options);