У меня есть AutoCompleteTextView
, к которому я хотел бы применить некоторый стиль. Код функционально работает, и базовый стиль отлично, но есть некоторые более продвинутые вещи, которые я хотел бы изменить. В частности:Styling Android AutoComplete
Пользовательские Гарнитуры
Моей панели поиск использует пользовательский шрифт моего приложения, но строки предсказания отображается с использованием шрифта шрифта по умолчанию в системе. Вот как я установить шрифт для результата поиска:
mSearchTextView.setTypeface(font.mAvenirLTStandardLight);
Удалить тень от выпадающего списка
Значения по умолчанию опции выпадающей есть тень, и мое приложение использует более плоский дизайн. Я хотел бы удалить это, если это возможно.
Добавить радиус в выпадающий
я смог обогнуть радиус каждой строки результата, но я был не в состоянии понять, как применить кривой для всего выпадающего списка.
Вот мои применимые код разделы:
private void setAutoCompleteListener() {
AutoCompleteAdapter adapter = new AutoCompleteAdapter(mContext,
R.layout.autocomplete_list_item, mLatLng);
mSearchTextView.setAdapter(adapter);
mSearchTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String str = (String) adapterView.getItemAtPosition(i);
initiateSearch();
hideKeyboard();
}
});
}
activity_map.xml
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/actvSearch"
android:hint="@string/search_or_enter_address"
android:background="@color/transparent_white"
android:textSize="14sp"
android:textColor="@color/black"
android:layout_centerVertical="true"
android:layout_toEndOf="@id/ibLogoImage"
android:layout_toStartOf="@id/ibSearch"
android:dropDownAnchor="@id/search_bar"
android:dropDownVerticalOffset="0dp" />
autocomplete_list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:textColor="@color/black"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingStart="25dp"
android:paddingEnd="25dp"/>
AutoCompleteAdapter.java
public class AutoCompleteAdapter extends ArrayAdapter<String> implements Filterable {
private static String TAG = "AutoComplete";
/*
* The lat/lng of the current location.
*/
private LatLng mLatLng;
/*
* A list of the autocomplete results.
*/
private ArrayList<String> mResults;
public AutoCompleteAdapter(Context context, int textViewResourceId, LatLng latLng) {
super(context, textViewResourceId);
Log.d(TAG, "Center of Screen: " + latLng.toString());
mLatLng = latLng;
}
@Override
public int getCount() {
return mResults.size();
}
@Override
public String getItem(int index) {
return mResults.get(index);
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
// Retrieve the AutocompleteHelper results.
mResults = AutoCompleteHelper.getAutoCompletePredictions(
constraint.toString(),
mLatLng);
// Assign the data to the FilterResults
filterResults.values = mResults;
filterResults.count = mResults.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
}
else {
notifyDataSetInvalidated();
}
}};
return filter;
}
}
Я пытаюсь удалить выпадающее меню тени, а также, вам удалось найти решение для этого? –
Yup - просто добавил его в раздел «Ответ». Дайте мне знать, можно ли улучшить какой-либо раздел :) –