启用程序图标导航
为了将应用程序图标转变为可以点击的图标,可以调用ActionBar的如下方法。
- setDisplayHomeAsUpEnabled(boolean showHomeAsUp):设置是否将应用程序图标转变为可点击的图标,并在图标上添加一个向左的箭头。
- setDisplayOptions(int options):通过传入int类型常量来控制该ActionBar的显示选项。
- setDisplayShowHomeEnabled(boolean showHome):设置是否显示应用程序的图标。
- setHomeButtonEnable(boolean enabled):设置是否将应用程序图标转变成可点击的按钮。
下面的程序将该Activity的程序图标转变成可点击的图标,并控制用于单击该图标时直接返回程序的主Activity。该程序的界面布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/txt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="15pt" android:text="可通过应用程序图标返回主Activity" /> </LinearLayout>
后台代码文件如下:
package org.crazyit.helloworld; import android.os.Bundle; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; public class ActionHomeTest extends Activity { private TextView txt; ActionBar actionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.action_home_test); txt=(TextView)findViewById(R.id.txt); actionBar=getActionBar(); //设置是否显示应用程序图标 actionBar.setDisplayShowHomeEnabled(false); //将应用程序图标设置为可点击的按钮 actionBar.setHomeButtonEnabled(true); //将应用程序图标设置为可点击的按钮,并在图标上添加左箭头 actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflator=new MenuInflater(this); //状态R.menu.context对应的菜单,并添加到menu中 inflator.inflate(R.menu.my_menu, menu); // Inflate the menu; this adds items to the action bar if it is present. //getMenuInflater().inflate(R.menu.action_home_test, menu); //return true; return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem mi) { if(mi.isCheckable()) { mi.setCheckable(true);//② } //判断单击的是哪个菜单项,并有针对性地作出响应 switch(mi.getItemId()) { case android.R.id.home: //创建启动ViewFlipperTest的Intent Intent intent=new Intent(this,ViewFlipperTest.class); //添加额外的Flag,将Activity栈中处于DialogTheme之上的Activity弹出 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //启动intent对应的Activity startActivity(intent); break; } return true; // TODO Auto-generated method stub //return super.onOptionsItemSelected(item); } }
上面的程序中前两行粗体字代码的任意一行都可将ActionBar上的应用程序图标转换为可点击的图标。接下来程序为点击事件绑定了事件监听器,当用户单击ID为android.id.home的Action Item时(应用程序图标的ID)时,程序使用Intent返回了应用程序主Activity,如上面的第二段粗体字代码所示。
运行上面的程序将看到如下效果: