Intereting Posts
RuntimeException из Google Analytics для Android «отправка сообщения обработчику по мертвой теме» Является ли SQLite на Android, встроенным с токенизатором ICU, включенным для FTS? Как использовать setTag и getTag с пользовательским адаптером About android Drawable getBounds return Rect (0, 0 – 0, 0) Служба Android читает localStorage? Android ActionBar не будет разделен на устройство Неверный компилятор Java при включении Java-модуля в зависимости от приложения Android Studio SQLiteAssetHelper NullPointerException только на некоторых устройствах Пользовательский динамический график в Android Android-Как показать выбор текста в текстовом режиме? Размер экрана устройства имеет странный эффект при масштабировании ImageViews Как скрыть фотографии из галереи и сохранить ее в моем приложении Android Parcelable Реализация с ArrayList <Object> Существует ли ограничение на количество строк кода, которое вы можете поместить в eclipse java doument Как использовать GWT-RequestFactory в Android SyncAdapter (всегда получая ValidationTool-Error)

Как определить, отображается ли раскрывающееся меню выше или ниже счетчика в андроиде?

Я работаю над дизайном, поскольку spinner выглядит обычным, что я хочу, когда всплывающее окно spinner падает ниже spinner. Я хочу использовать popupbackground изображение по-другому, и когда оно всплывает над spinner, я хочу использовать popup background different

Вот мой код Xml:

<Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:spinnerMode="dropdown" android:popupBackground="@drawable/spinnerbottombg" android:overlapAnchor="false" android:drawSelectorOnTop="false" /> 

Теперь вопрос в том, как я знаю, что spinner открывает раскрывающийся список выше или ниже него

Solutions Collecting From Web of "Как определить, отображается ли раскрывающееся меню выше или ниже счетчика в андроиде?"

Я копаю глубоко в PopupWindow и обнаружил, что ваше требование может быть достигнуто

StateListDrawable

Следующие коды объяснят все –

activity_main.xml

 <RelativeLayout xmlns:android="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="com.mmbarno.dummyalertdialog.MainActivity"> <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:spinnerMode="dropdown" android:overlapAnchor="false" android:drawSelectorOnTop="false" /> </RelativeLayout> 

popup_bg_above.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#FF4081" /> </shape> 

popup_bg_below.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#3F51B5" /> </shape> 

Наконец, в MainActivity.java

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setPopupBackgroundDrawable(getPopupBg()); populateSpinner(); } private void populateSpinner() { ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); } private StateListDrawable getPopupBg() { StateListDrawable states = new StateListDrawable(); int identifier = Resources.getSystem().getIdentifier("state_above_anchor", "attr", "android"); states.addState(new int[] {identifier}, ContextCompat.getDrawable(this, R.drawable.popup_bg_below)); states.addState(new int[]{}, ContextCompat.getDrawable(this, R.drawable.popup_bg_above)); return states; } 

Надеюсь, ваше требование будет выполнено. Я тестировал его в разных сценариях вместе с ScrollView. И это отлично работает.

Всплывающее окно

Всплывающее окно