在fragment中的 actionbar 点击返回箭头事件处理

本文介绍如何在Android应用中设置ActionBar的返回按钮,并通过onOptionsItemSelected方法实现点击返回按钮后的操作。

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

在oncreate()中

bar = getActionBar();  //获取ActionBar的对象,从这个方法也可知action bar是activity的一个属性
bar.setDisplayHomeAsUpEnabled(true);  //显示返回的箭头,并可通过onOptionsItemSelected()进行监听,其资源ID为android.R.id.home。 

setHasOptionsMenu(true);//这个需要,不然onOptionsItemSelected方法不会被调用


重写

@Override 
    public boolean onOptionsItemSelected(MenuItem item) {  
        switch(item.getItemId()){ 
        case android.R.id.home//对用户按home icon的处理,本例只需关闭activity,就可返回上一activity,即主activity。
            showInfo("Home is press"); 
            finish(); 
            return true; 
        default: 
            break; 
        } 
        return super.onOptionsItemSelected(item); 
    } 

Android中,Action Bar(现在称为Navigation Bar)中的返回图标通常有一个预设的内边距,这是为了保证其在不同屏幕尺寸上的可用性和清晰度。如果你想移除这个返回图标(通常表现为一个向左箭头或者"back"字样)的内边距,可以按照以下步骤操作: 1. **自定义返回图标**:首先,你可以创建一个没有内边框的图标作为返回按钮,例如使用VectorDrawable、BitmapDrawable或者ShapeDrawable,并设置为`android:src`属性。 ```xml <ImageView android:id="@+id/back_button" android:src="@drawable/ic_back_no_padding" android:tint="?attr/colorPrimary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name"/> ``` 2. **修改主题样式**:在应用的主题文件(如styles.xml)中,为ActionBar设置一个自定义的样式,去掉`homeAsUpIndicator`的内边距。例如: ```xml <style name="MyTheme.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar"> <item name="actionBarHomeAsUpIndicator">@drawable/ic_back_no_padding</item> <!-- 这里添加去边距的属性 --> <item name="android:buttonBarStyle">@style/ButtonBarWithoutPadding</item> </style> <style name="ButtonBarWithoutPadding" parent=""> <item name="android:paddingLeft">0dp</item> <item name="android:paddingRight">0dp</item> </style> ``` 3. **重写ActionBar**:在Activity或者Fragment中,通过setSupportActionBar()方法传入自定义的ActionBar风格: ```java getSupportActionBar().setStyle(MyTheme.ActionBar); ``` 请注意,这一步可能需要针对API版本做适配,因为某些API级别可能没有提供`buttonBarStyle`这个属性。在高版本Android中,你可能需要检查`Toolbar`而不是`ActionBar`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值