android开发actionbar,Android 开发之为ActionBar 添加Actionbar Button

本文介绍了如何在Android应用中添加ActionBar、Menu以及返回按钮。通过创建menu资源文件设置ActionButtons,使用showAsAction属性控制显示方式,并处理MenuItem的点击事件。此外,还展示了如何在AndroidManifest中配置parentActivityName来实现返回按钮,以及如何在不同Activity间传递主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天做App 的时候,做的比较仓促,就没有添加返回按钮,还有就是MainActivity 的Theme 怎么传递到其他Activity 中,今天无意中看到官方的Train,所以就记下来啦,顺便吧ActionBar,Menu 也复习复习;

添加Action Buttons

首先我们要创建menu 文件,我们可以为顶部添加Menu,showAsAction 是显示的类型,ifRoom 会自动匹配是否有实体键,always 是一直隐藏,但是使用Support Libraryandroid:showAsAction="ifRoom" 会提示错误,所以在menu 中添加xmlns:app="http://schemas.android.com/apk/res-auto" 属性,改为app:showAsAction="ifRoom" 就没有错误;

res/menu/main_activity_actions.xml

xml

android:icon="@drawable/ic_action_search"

android:title="@string/action_search"

android:showAsAction="ifRoom" />

android:title="@string/action_settings"

android:showAsAction="never" />

添加ActionBar

java@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

为Action Button 添加响应事件

java@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

//当点击不同的menu item 是执行不同的操作

switch (id) {

case R.id.action_search:

openSearch();

break;

case R.id.action_settings:

openSettings();

break;

default:

break;

}

return super.onOptionsItemSelected(item);

}

为ActionBar 顶部添加返回按钮

首先要在AndroidManifest 文件中配置

xml

...

android:name="com.example.myfirstapp.MainActivity" ...>

...

android:name="com.example.myfirstapp.DisplayMessageActivity"

android:label="@string/title_activity_display_message"

android:parentActivityName="com.example.myfirstapp.MainActivity" >

android:name="android.support.PARENT_ACTIVITY"

android:value="com.example.myfirstapp.MainActivity" />

然后在onCrate 中设置

java@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_displaymessage);

// 3.0+

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

// If your minSdkVersion is 11 or higher, instead use:

// getActionBar().setDisplayHomeAsUpEnabled(true);

}

最后的效果图

android_training_back_activity.png

为下一个Activity 传递MainActivity Theme

需要注意的是,setTheme 方法在setContentView 之前;其实就是利用Intent 将Theme 传递到下一个Activity;

javapublic class MainActivity extends ActionBarActivity {

public static int MAIN_THEME_STYLE_ID = R.style.Theme_AppCompat_Light;

public static String MAIN_THEME_STYLE = "Theme_AppCompat_Light";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setTheme(R.style.Theme_AppCompat_Light);

setContentView(R.layout.activity_main);

}

public void onToBackActivity(View view) {

Intent intent = new Intent(this, BackActivity.class);

intent.putExtra(MAIN_THEME_STYLE, MAIN_THEME_STYLE_ID);

startActivity(intent);

}

}

在下一个Activity 获取Theme

javapublic class BackActivity extends ActionBarActivity {

int style_id;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getMainIntent();

setTheme(style_id);

setContentView(R.layout.activity_back);

getSupportActionBar().setDisplayShowCustomEnabled(true);

}

void getMainIntent() {

Intent intent = getIntent();

style_id = intent.getIntExtra(MainActivity.MAIN_THEME_STYLE, 0);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值