<p>Android ActionBar-左上角icon设置和事件配置 <3></p><p>问题:</p><p> 在使用Actionbar时,默认在左上角是会有一个跟软件发布时的LOGO一样的图标,在大多数情况下按照默认图标进行显示已经很好,既使得软件整体统一,也方便省事。但有些情况下,还是希望不同的界面左上角的图标是不同的,或不想使用默认的LOGO,比如LOGO是有底色,放在Actionbar上不好看……</p><p>解决办法:</p><p> 在配置文件Manifest中增加android:logo="@drawable/logo_top"属性,如果是想给整个程序添加统一的自定义图标,则在application标签下增加该属性;如果是想针对不同的activity添加不同的左上角图标,则在各自的activity标签下增加该属性,然后指向不同的图片资源即可。</p><p>上面的一位网友给出的方法非常只好.</p><p>下面给出一个demo来测试一下:</p><p>AndroidManifest.xml :</p><pre class="brush:xml;toolbar:false"><?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.iconshow"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="com.example.iconshow.MainActivity"
android:logo="@drawable/ic_launcher_settings"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest></pre><p></p><pre class="brush:java;toolbar:false">java代码如下:
packagecom.example.iconshow;
importandroid.os.Bundle;
importandroid.app.ActionBar;
importandroid.app.Activity;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.Window;
importandroid.view.WindowManager;
publicclassMainActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//seticoninjava,hereseticoninAndroidManifest.xml,soignorefollowingcode
/*
requestWindowFeature(Window.FEATURE_LEFT_ICON);
getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,
R.drawable.ic_launcher_settings);
*/
ActionBaractionBar=this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_main);
}
@Override
publicbooleanonOptionsItemSelected(MenuItemitem){
//TODOAuto-generatedmethodstub
//addtop-lefticonclickeventdeal
switch(item.getItemId()){
caseandroid.R.id.home:
finish();
}
returnsuper.onOptionsItemSelected(item);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.
getMenuInflater().inflate(R.menu.main,menu);
returntrue;
}
}</pre><p>运行即可以看到屏幕左上角有一个"<"的返回箭头和在xml中指定的icon图标(96*96pix),点击事件是如下处理的:</p><pre class="brush:xml;toolbar:false">@Override
publicbooleanonOptionsItemSelected(MenuItemitem){
//TODOAuto-generatedmethodstub
//addtop-lefticonclickeventdeal
switch(item.getItemId()){
caseandroid.R.id.home:
finish();
}
returnsuper.onOptionsItemSelected(item);
}</pre>