我發現這個問題(Android 2.2 Spinner looks old in Actionbar),我試過了,但它不適合我!我想在我的Sherlock Actionbar中創建一個Spinner,但在較低的Android版本中看起來很老。這是我的代碼:Sherlock actionbar spinner在較低的Android版本中看起來'舊'
的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
}
Oncreateoptionsmenu:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getSupportMenuInflater();
mi.inflate(R.menu.list, menu);
final Spinner spinner = new Spinner(getSupportActionBar()
.getThemedContext());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getSupportActionBar().getThemedContext(),
R.layout.sherlock_spinner_item, new String[]{"Level 1", "Level 2", "Level 3"});
adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// clicked
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
menu.add("Level").setActionView(spinner)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
「直接使用ActionBarSherlock自己的IcsSpinner,儘管存在風險,或者」=>有哪些風險? –
@BartWesselink:正如我寫的,「IcsSpinner」不是ActionBarSherlock公共API的一部分,正如「internal」作爲其包名稱的一部分所證明的那樣。 Jake可以將它移動到一個新的包中,或重新命名它,完全清除它,更改支持的屬性,更改公共Java API或以其他方式混淆它。這樣的改變完全在他的權限之內,因爲'IcsSpinner'是實現的,而不是接口。但是,這些更改很可能會破壞你*(以及任何直接使用'IcsSpinner'的人)。 – CommonsWare
感謝您的回答,這對我有很大幫助! –