学习了: http://blog.csdn.net/bigconvience/article/details/28886241
自己总结了些 如果有不正确的地方请指正
ActionBar位于Activity的顶部,可用来显示activity的标题、Icon、Actions和一些用于交互的View。它也可被用于应用的导航。
ActionBar 是在 Android 3.0(API 11)中加入到SDK中的,想在低版本中使用ActionBar有两种选择:使用http://actionbarsherlock.com 或使用Support Library v7。下面是一张使用ActionBar的界面截图:
其中,[1]是ActionBar的图标,[2]是两个action按钮,[3]是overflow按钮
案例一:搜索
第一步:
menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action_search"
android:actionViewClass="android.support.v7.widget.SearchView"/>
<item
android:id="@+id/action_settings"
android:title="Settings">
</item>
</menu>
第二步:
1.初始化menu
/**
* 初始化menu
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
2.处理搜索点击
// 处理搜索点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_search) {
Toast.makeText(this, "搜索", 0).show();
}
return super.onOptionsItemSelected(item);
}
3.搜索的监听
/**
* 初始化menu
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
//获取searchview
SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
//设置监听
search.setOnQueryTextListener(new OnQueryTextListener() {
// 搜索文本提交的时候
@Override
public boolean onQueryTextSubmit(String arg0) {
Toast.makeText(getApplicationContext(), "onQueryTextSubmit", 0)
.show();
return true;
}
// 搜索文本发生变化的时候
@Override
public boolean onQueryTextChange(String searchText) {
Toast.makeText(getApplicationContext(), searchText, 0).show();
return false;
}
});
return true;
}
案例二:
MainActivity ---跳转--- DetailActivity ---返回---MainActivity
1.跳转
//跳转 MainActivity - DetailActivity
public void click(View view){
startActivity(new Intent(getApplicationContext(),DetailActivity.class));
}
2.返回
在DetailActivity
package com.itheima.googleplay;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
public class DetailActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);//给图片左上角添加一个返回图标
}
}
AndroidManifest.xml
需要注意:com.itheima.googleplay.MainActivity必须全称不可以简写android:parentActivityName="com.itheima.googleplay.MainActivity"
<activity
android:name=".DetailActivity"
android:label="@string/action_detail"
android:parentActivityName="com.itheima.googleplay.MainActivity"
></activity>
案例三:设置actionbar tab标签
1.自定义样式
drawable
actionbar_tab_indicator.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- STATES WHEN BUTTON IS NOT PRESSED -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/tab_unselected" />
<item android:state_focused="false" android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/tab_selected" />
<!-- Focused states (such as when focused with a d-pad or mouse hover) -->
<item android:state_focused="true" android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/tab_unselected_focused" />
<item android:state_focused="true" android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/tab_selected_focused" />
<!-- STATES WHEN BUTTON IS PRESSED -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false"
android:state_pressed="true"
android:drawable="@drawable/tab_unselected_pressed" />
<item android:state_focused="false" android:state_selected="true"
android:state_pressed="true"
android:drawable="@drawable/tab_selected_pressed" />
<!-- Focused states (such as when focused with a d-pad or mouse hover) -->
<item android:state_focused="true" android:state_selected="false"
android:state_pressed="true"
android:drawable="@drawable/tab_unselected_pressed" />
<item android:state_focused="true" android:state_selected="true"
android:state_pressed="true"
android:drawable="@drawable/tab_selected_pressed" />
</selector>
2.
valus
theme.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- the theme applied to the application or activity -->
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarTabStyle">@style/MyActionBarTabs</item>
<item name="android:actionBarTabTextStyle">@style/MyActionBarTabTextStyle</item>
</style>
<!-- ActionBar tabs styles背景 -->
<style name="MyActionBarTabs" parent="@style/Widget.AppCompat.ActionBar.TabView">
<!-- tab indicator -->
<item name="android:background">@drawable/actionbar_tab_indicator</item>
<!-- Support library compatibility -->
<item name="background">@drawable/actionbar_tab_indicator</item>
</style>
<!-- 字体设置 -->
<style name="MyActionBarTabTextStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabText">
<item name="android:textColor">#ff0000</item>
<item name="android:textSize">12sp</item>
</style>
</resources>
3.AndoridManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomActionBarTheme" >//自定义
<activity..................
4.MainActivity.java
package com.itheima.googleplay;
import android.os.Bundle;
import android.app.ActionBar;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.SearchView.OnQueryTextListener;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//=========================================tab标签=========================================================
ActionBar bar = getActionBar();
//添加tab
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//添加标签
bar.addTab(bar.newTab().setText("标签1").setTabListener(new MyTabListenter()));
bar.addTab(bar.newTab().setText("标签2").setTabListener(new MyTabListenter()));
bar.addTab(bar.newTab().setText("标签3").setTabListener(new MyTabListenter()));
bar.addTab(bar.newTab().setText("标签4").setTabListener(new MyTabListenter()));
bar.addTab(bar.newTab().setText("标签5").setTabListener(new MyTabListenter()));
}
private class MyTabListenter implements TabListener{
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
}
//==================================================================================================================================
/**
* 初始化menu
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
//获取searchview
SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView();
//设置监听
search.setOnQueryTextListener(new OnQueryTextListener() {
// 搜索文本提交的时候
@Override
public boolean onQueryTextSubmit(String searchText) {
//输入内容的searchText
Toast.makeText(getApplicationContext(), searchText, 0)
.show();
return true;
}
// 搜索文本发生变化的时候
@Override
public boolean onQueryTextChange(String searchText) {
Toast.makeText(getApplicationContext(), searchText, 0).show();
return false;
}
});
return true;
}
// 处理搜索点击事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_search) {
Toast.makeText(this, "搜索", 0).show();
}
return super.onOptionsItemSelected(item);
}
//跳转 MainActivity - DetailActivity
public void click(View view){
startActivity(new Intent(getApplicationContext(),DetailActivity.class));
}
}