修改Toolbar返回按钮的颜色

本文介绍了一种在不同界面中修改返回按钮颜色的方法,通过自定义主题样式,可以在保持5.0+版本点击水波纹效果的同时改变返回按钮的颜色。

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


在项目中遇到一个这样的需求,在不同的界面返回按钮的颜色需要不一样,虽然可以提供不同的图片来达到相同的效

果,但是那样做的话就会导致原来在5.0+上的点击水波纹效果将会消失,那如何做到既修改了返回按钮的颜色,又不

失酷炫的效果呢?


也很简单,下面是我在stackoverflow上找到的解决方法:

<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar">
  <item name="colorControlNormal">@color/arrow_color</item> 
  //your code ....
</style>

这里你可以定义多个Theme来实现不同的返回按钮的颜色:

  <style name="back_arrow_blue_theme" parent="AppTheme">
        <item name="colorControlNormal">@color/colorStatusBar</item>
   </style>


### 自定义 NavigationBar 返回按钮图标 在 iOS 和 Android 中,自定义 `NavigationBar` 的返回按钮图标可以通过不同的方式实现。 #### iOS 实现 在 iOS 开发中,可以使用 `UIBarButtonItem` 来定制返回按钮的外观。通过创建一个带有自定义视图的 `UIBarButtonItem` 并将其设置到导航栏上,能够更改默认的返回箭头图标[^3]。 以下是具体的代码示例: ```swift // 创建一个 UIImage 对象作为新的返回按钮图标 let backButtonImage = UIImage(named: "custom_back_icon") // 使用该图像创建一个新的 UIButton let backButton = UIButton(type: .custom) backButton.setImage(backButtonImage, for: .normal) // 设置按钮尺寸 backButton.frame = CGRect(x: 0, y: 0, width: backButtonImage?.size.width ?? 24, height: backButtonImage?.size.height ?? 24) // 添加点击事件处理逻辑 backButton.addTarget(self, action: #selector(handleBackAction), for: .touchUpInside) // 将按钮封装成 UIBarButtonItem let customBackButtonItem = UIBarButtonItem(customView: backButton) // 替换当前 ViewController 的左侧按钮为自定义按钮 self.navigationItem.leftBarButtonItem = customBackButtonItem ``` 上述代码展示了如何替换掉标准的返回按钮并应用自定义图片作为新图标。 #### Android 实现 对于 Android 应用程序而言,在微信或其他第三方库的基础上修改顶部导航条 (navigation-bar),通常涉及调整 XML 布局文件以及 JSON 配置项来改变主题颜色与文字风格等内容[^4]。如果要单独指定返回键图形,则需重新绘制 Toolbar 组件中的 HomeAsUpIndicator 图形资源。 下面是一个简单的例子说明怎样变更 Material Design 主题下的工具栏回退指示器图案: ```xml <!-- res/menu/toolbar_menu.xml --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 定义菜单项目 --> </menu> ``` 接着配置 activity_main.xml 中包含 toolbar 控件的部分如下所示: ```xml <!-- res/layout/activity_main.xml --> <androidx.appcompat.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleTextColor="#FFFFFF"/> ``` 最后一步是在 Activity 初始化期间绑定此控件至支持动作栏,并加载所需的矢量资产充当 home-as-up 符号: ```java import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar myToolbar = findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); Drawable drawable = ContextCompat.getDrawable(this, R.drawable.ic_custom_arrow_left_white_24dp); assert getSupportActionBar() != null; getSupportActionBar().setHomeAsUpIndicator(drawable); } } ``` 这里我们利用了 `getSupportActionBar()` 方法获取操作栏实例之后调用了其成员函数 `setHomeAsUpIndicator(Drawable)` 来指派我们的个性化绘图对象给左上方位置上的退出指引标记位。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值