java - 如图所示,如何在 android java 中实现自定义导航栏
问题描述
这是我想在我的应用程序中为底部导航栏实现的设计。初始状态
单击另一个图标后,我希望它如图所示进行更改:单击后
我是android新手,到目前为止我只知道底部导航栏的基本实现。我无法理解如何实现这一点。
解决方案
你有两个选择。要么完全从头开始构建你自己的小部件,要么使用现有的布局和小部件来构建它。
构建您自己的小部件
创建您自己的小部件可能会非常具有挑战性,具体取决于您要完成的任务。您必须创建一个扩展 View 或其任何其他子类的类。例如,您可能从 LinearLayout 扩展,因为它可能提供您正在寻找的一些功能。
你必须至少
- 覆盖触摸事件以创建您自己的触摸处理
- 覆盖绘制方法以绘制您的自定义 ui
- 覆盖布局和测量方法以在调整大小等时调整布局行为。
这可能会变得非常复杂,所以我不建议初学者使用它。虽然它允许完全自定义您的小部件,但它也带来了更高的自我造成错误或不良行为的风险。
使用布局和小 部件 使用现有的小部件和布局创建这样的小部件很容易,但在实现方面有更多限制。您将创建一个单独的布局 xml 文件,您可以在其中创建小部件的视觉效果。对于功能部分,您将编写某种 ui-controller 类,该类为该布局实现所有必需的功能等,并且可以连接到它(使用视图的现有回调)
- 在布局中使用 ID 来访问应该具有特殊行为的不同组件
- 实现 clicklistener 或 touchlistener 来处理特定的交互事件
- 对于动画,Android 提供了一个 API。
- 将您的小部件布局 xml 包含到任何其他布局 xml 中或单独对其进行扩充。然后添加你的 ui 控制器
Android 已经提供了广泛的布局和小部件,可用于完成您正在寻找的内容。在尝试编写自己的之前,我会利用这些
推荐阅读
- python - 如何在numpy中循环回到数组的开头以获取越界索引?
- graph - 即使有更多的通话记录,图形资源管理器的通话记录也会返回 0 计数
- proxy - 无法在 iOS Simulator 14.5 上安装 Charles 根证书
- amazon-web-services - 在多个 AWS Organizations 账户上部署资源
- pip - pip 无法从 .whl 安装 Twisted 作为依赖项
- python - Python tkinter 防止颜色框在它应该被调用之前被调用
- wordpress - Woocommerce 角色:shop_manager > create_users - 角色下拉列表
- machine-learning - 在机器学习中使用 Scikit 对邮政编码进行特征散列
- django - 从另一个容器构建弹性搜索索引
- c# - 长时间调用我的 DownloadFile 方法抛出 WebException