与ActionBar一样ActionBarSherlock也提供了NAVIGATION_MODE_LIST模式,即在操作栏上实现下拉的形式,方便用户进行选择,关键步骤是要实现一个OnNavigationListener接口,以便选择下拉选项时切换不同的视图。
MainActivity.java代码:
public class MainActivity extends SherlockFragmentActivity {
/*定义一个ActionBar*/
private ActionBar actionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*设置一个adapter*/
SpinnerAdapter adapter = ArrayAdapter.createFromResource(this, R.array.student, android.R.layout.simple_list_item_1);
/*得到ActionBar*/
actionBar = this.getSupportActionBar();
/*将actionBar的操作模型设置为NAVIGATION_MODE_LIST*/
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
/*设置下拉的回调事件*/
actionBar.setListNavigationCallbacks(adapter, new MyNavigationListener());
}
/**
* 创建onNavigationListener内部监听器,以实现选择下拉列表中选项切换视图的效果
*/
class MyNavigationListener implements OnNavigationListener{
/*从arrays.xml文件中获取字符数组*/
String[] listNames = getResources().getStringArray(R.array.student);
/*选择下拉菜单项的时候,将Activity的内容置换为对应的Fragment*/
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
/*生成自定Fragment*/
StudentInfo student = new StudentInfo();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
/*将Activity中的内容替换成为对应的Fragment*/
transaction.replace(android.R.id.content, student, listNames[itemPosition]);
transaction.commit();
return true;
}
}
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
StudentInfo.java代码:
public class StudentInfo extends Fragment {
/* Fragment对应的标签,当Fragment依附于Activity时得到 */
private String tag;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
tag = this.getTag();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText(tag);
return textView;
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
values/arrays.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="student">
<item >廖*民</item>
<item >刘*星</item>
<item >钟*建</item>
<item >罗*明</item>
</string-array>
</resources>
demo效果展示:
下载demo:http://download.csdn.net/detail/lzm1340458776/7320729