如何在 android 中创建自定义 Spinner 工具栏下拉菜单
How create a custom Spinner toolbar dropdown in android
我需要在我的操作中添加自定义微调器下拉菜单 bar.In main-activity 我正在使用以下代码。
private Toolbar mToolbar;
private Spinner mToolbarSpinner;
private List<SpinnerNavItem> mToolbarSpinnerNavigationItems;
private BaseAdapter mArrayAdapter;
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
/*Setup a Spinner*/
mToolbarSpinner = (Spinner) findViewById(R.id.spinner_toolbar);
/*Manage the spinner*/
mToolbarSpinnerNavigationItems = new ArrayList<SpinnerNavItem>();
mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("Local", R.drawable.deviceonline,"device namne1","port",false));
mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("My Places", R.drawable.deviceonline,"device name2","port2",false));
mArrayAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item,
mToolbarSpinnerNavigationItems);
mToolbarSpinner.setAdapter(mArrayAdapter);
当我运行项目时,我得到以下输出
我该如何解决这个问题?
有 2 个选项供您选择:
首先,您可以将 class SpinnerNavItem
的方法 toString()
重写为 return 您想要显示的内容。
其次,您可以覆盖 ArrayAdapter
的方法 getView()
和 getDropDownView()
以准确显示您想要的内容。
getView()
在 Spinner
上显示当前所选项目的文本(Spinner
的当前显示文本)
getDropDownView()
显示Spinner
弹出下拉列表中每一项的文字
mArrayAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item,
mToolbarSpinnerNavigationItems) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
SpinnerNavItem currentItem = mToolbarSpinnerNavigationItems.get(position);
// remember to inflate custom layout for spinner item
// then set anything you want here
// remember to use convertView.findViewById(), not just findViewById()
// this is an example
// inflate layout
convertView = View.inflate(MainActivity.this, R.layout.support_simple_spinner_dropdown_item, null);
// get view
TextView tvText1 = (TextView) convertView.findViewById(android.R.id.text1);
// set content
tvText1.setText("Text to display");
// return
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
// implement the same way as getView() method
}
};
我需要在我的操作中添加自定义微调器下拉菜单 bar.In main-activity 我正在使用以下代码。
private Toolbar mToolbar;
private Spinner mToolbarSpinner;
private List<SpinnerNavItem> mToolbarSpinnerNavigationItems;
private BaseAdapter mArrayAdapter;
mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
/*Setup a Spinner*/
mToolbarSpinner = (Spinner) findViewById(R.id.spinner_toolbar);
/*Manage the spinner*/
mToolbarSpinnerNavigationItems = new ArrayList<SpinnerNavItem>();
mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("Local", R.drawable.deviceonline,"device namne1","port",false));
mToolbarSpinnerNavigationItems.add(new SpinnerNavItem("My Places", R.drawable.deviceonline,"device name2","port2",false));
mArrayAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item,
mToolbarSpinnerNavigationItems);
mToolbarSpinner.setAdapter(mArrayAdapter);
当我运行项目时,我得到以下输出
我该如何解决这个问题?
有 2 个选项供您选择:
首先,您可以将 class
SpinnerNavItem
的方法toString()
重写为 return 您想要显示的内容。其次,您可以覆盖
ArrayAdapter
的方法getView()
和getDropDownView()
以准确显示您想要的内容。getView()
在Spinner
上显示当前所选项目的文本(Spinner
的当前显示文本)
弹出下拉列表中每一项的文字getDropDownView()
显示Spinner
mArrayAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, mToolbarSpinnerNavigationItems) { @Override public View getView(int position, View convertView, ViewGroup parent) { SpinnerNavItem currentItem = mToolbarSpinnerNavigationItems.get(position); // remember to inflate custom layout for spinner item // then set anything you want here // remember to use convertView.findViewById(), not just findViewById() // this is an example // inflate layout convertView = View.inflate(MainActivity.this, R.layout.support_simple_spinner_dropdown_item, null); // get view TextView tvText1 = (TextView) convertView.findViewById(android.R.id.text1); // set content tvText1.setText("Text to display"); // return return convertView; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { // implement the same way as getView() method } };