Vij*_*ant 6 android spinner android-actionbar
我正在开发一个带导航栏的应用程序.现在我试图将添加Spinner到ActionBar.
我能够获得我的自定义图标ActionBar.但是当我向微调器添加条目时,图标将隐藏在选择框后面,并选择第一个项目.
我想有只在图标ActionBar和drop-down-list/spinner图标上轻敲时出现.
这是我的代码:
private void initializeMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options, menu);
View v = (View) menu.findItem(R.id.menuSort).getActionView();
Spinner spinner=(Spinner)v.findViewById(R.id.bookmarks_menu);
Bookmark bookmark1 = new Bookmark();
Bookmark bookmark2 = new Bookmark();
List<Bookmark> list = new ArrayList<Bookmark>();
list.add(bookmark1);
list.add(bookmark2);
SpinAdapter adapter = new SpinAdapter(getApplicationContext(),0, list);
spinner.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
只有图标才能Spinner通过几个步骤实现.
步骤1
将您想要的图标放在xml中:
<Spinner
...
android:background="@drawable/ic_sort_white_24dp" />
Run Code Online (Sandbox Code Playgroud)
第2步
然后,在adapter的Spinner,覆盖getView(),就像这样:
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// this part is needed for hiding the original view
View view = super.getView(position, convertView, parent);
view.setVisibility(View.GONE);
return view;
}
};
Run Code Online (Sandbox Code Playgroud)
说明
我们需要了解getView()适配器中的视图将在Spinner未打开时使用.我们提供可见性gone是因为我们不想看到它,所以留下的是Spinnerxml 的背景,我ic_sort_white_24dp在本例中已经设置了它(步骤1).
不要混淆使用getDropDownView()哪个选项将在Spinner单击后丢弃掉的选项.
奖金截图!
这就是我的样子.希望能帮助到你!
检查它的工作情况..

public class MainActivity extends Activity {
final String[] choices = { "Android", "iOS", "RIM" };
final int[] choices_img = { R.drawable.ic_launcher, R.drawable.ios,
R.drawable.black };
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_dropdown_item_1line,
choices);
ListViewAdapter adapter1 = new ListViewAdapter(MainActivity.this);
actionBar.setListNavigationCallbacks(adapter1,
new OnNavigationListener() {
@Override
public boolean onNavigationItemSelected(int itemPosition,
long itemId) {
Toast.makeText(MainActivity.this,
choices[itemPosition], Toast.LENGTH_SHORT)
.show();
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public class ListViewAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ListViewAdapter(Context con) {
// TODO Auto-generated constructor stub
mInflater = LayoutInflater.from(con);
}
public int getCount() {
// TODO Auto-generated method stub
return choices.length;
}
public Object getItem(int position) {
// TODO Auto-generated method stub
// return product_id1.size();
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
// return product_id1.get(position).hashCode();
return position;
}
@SuppressLint("NewApi")
public View getView(final int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
final ListContent holder;
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.scan_row1, null);
holder = new ListContent();
holder.name = (TextView) v.findViewById(R.id.textView1);
holder.img_p = (ImageView) v.findViewById(R.id.imageView1);
// holder.total_rate.setOnClickListener(mOnTitleClickListener1);
v.setTag(holder);
} else {
holder = (ListContent) v.getTag();
}
holder.img_p.setBackground(getResources().getDrawable(
choices_img[position]));
holder.name.setText("" + choices[position]);
return v;
}
}
static class ListContent {
ImageView img_p;
TextView name;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只想要图标,那么只需在 scan_row1.xml 中使用图像视图
| 归档时间: |
|
| 查看次数: |
3874 次 |
| 最近记录: |