Android 底部导航栏选中时改变高度

在 Android 应用程序中,底部导航栏是一个常见的 UI 元素,用于展示应用的不同页面或功能。当用户点击底部导航栏的选项时,通常会有一个视觉效果来指示当前选中的项。本文将介绍如何在 Android 应用中实现底部导航栏选中时改变高度的效果。

实现思路

要实现底部导航栏选中时改变高度的效果,我们可以使用一个自定义的底部导航栏布局,并在用户点击某个选项时,动态改变该选项的高度。具体来说,我们可以创建一个 BottomNavigationBar 类,其中包含多个 BottomNavigationItem 子项。当用户点击某个子项时,我们可以通过改变其高度来实现选中效果。

代码示例

BottomNavigationBar.java

public class BottomNavigationBar extends LinearLayout {

    private List<BottomNavigationItem> items;

    public BottomNavigationBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    private void initView() {
        setOrientation(HORIZONTAL);
        items = new ArrayList<>();
    }

    public void addItem(BottomNavigationItem item) {
        items.add(item);
        addView(item);
        item.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                for (BottomNavigationItem i : items) {
                    if (i == v) {
                        // 改变选中项的高度
                        i.setSelected(true);
                    } else {
                        i.setSelected(false);
                    }
                }
            }
        });
    }
}

BottomNavigationItem.java

public class BottomNavigationItem extends TextView {

    private boolean isSelected;

    public BottomNavigationItem(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    private void initView() {
        setGravity(Gravity.CENTER);
        setTextColor(Color.BLACK);
    }

    public void setSelected(boolean selected) {
        isSelected = selected;
        if (selected) {
            // 改变高度为选中状态
            setHeight(100);
        } else {
            // 恢复初始高度
            setHeight(80);
        }
    }
}

类图

classDiagram
    class BottomNavigationBar {
        - List<BottomNavigationItem> items
        + void initView()
        + void addItem(BottomNavigationItem item)
    }
    class BottomNavigationItem {
        - boolean isSelected
        + void initView()
        + void setSelected(boolean selected)
    }

序列图

sequenceDiagram
    participant User
    participant BottomNavigationBar
    participant BottomNavigationItem

    User -> BottomNavigationBar: 点击选项
    BottomNavigationBar -> BottomNavigationBar: 处理点击事件
    BottomNavigationBar -> BottomNavigationItem: 设置选中状态
    BottomNavigationItem -> BottomNavigationItem: 改变高度

结尾

通过以上代码示例和理念,我们可以实现 Android 应用中底部导航栏选中时改变高度的效果。这种效果不仅可以提升用户体验,还能使应用更加美观。希望本文对你有所帮助,谢谢阅读!