Таким образом, для нашей потребности, мы должны использовать ListPopupWindow. Ссылка на официальное описание:
http://developer.android.com/reference/android/widget/ListPopupWindow.html
Давайте погрузимся в коде:
у нас есть свой собственный метод:
public void downloadBtnSelected(View anchor) {
final ListPopupWindow lpw = new ListPopupWindow(this);
String[] data = { ".png", ".pdf", ".jpg", ".jpeg" };
PopupAdapter pa = new PopupAdapter(data, this);
lpw.setAdapter(pa);
//setting up an anchor view
lpw.setAnchorView(anchor);
//Setting measure specifications. I'v used this mesure specs to display my
//ListView as wide as my anchor view is
lpw.setHeight(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
lpw.setWidth(anchor.getRight() - anchor.getLeft());
// Background is needed. You can use your own drawable or make a 9patch.
// I'v used a custom btn drawable. looks nice.
lpw.setBackgroundDrawable(this.getResources().getDrawable(
android.R.drawable.btn_default));
// Offset between anchor view and popupWindow
lpw.setVerticalOffset(3);
lpw.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
/// Our action.....
lpw.dismiss();
}
});
lpw.show();
}
и кнопку с onClickListener к позвоните по этому методу:
Button btn = new Button(this);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
downloadBtnSelected(v);
}
});
мы передаем аргумент View v как наш якорь, чтобы наш PopupWindow знал, где отображать себя. Он будет отображаться в нижнем левом углу нашего анкерного представления, если есть достаточно места внизу. Если нет - он будет отображаться выше.
Почему вы не используете прядильщик? – Analizer
Я понятия не имею, что такое «простая» кнопка с «выпадающим списком элементов списка» может отличаться от Spinner, действительно ... –
простая кнопка с выпадающим списком ... Amazing – Unknown