DropDownView:实践指南

作者:袖梨 2026-09-11

真正理解DropDownView,要从它处理的任务开始:带有内置动画的简单下拉视图。这类日常自动化工具真正难在输入边界、依赖和失败处理如果不清楚就很难稳定复用,仓库说明只能作为第一层证据。先用一项范围明确的真实任务完成最小试跑更稳妥;过程中要观察配置时间、输出质量、异常信息和维护痕迹,失败也应能解释原因。它更像给愿意先做小范围验证并复查原始文档的团队准备的可审查方案,是否长期使用应由试跑数据决定。

DropDownView

摇篮

确保您的 minSdkVersion 为 19 或以上:

android {
    compileSdkVersion 25
    defaultConfig {
	applicationId "com.anthonyfdev.dropdownviewexample"
	minSdkVersion 19
	targetSdkVersion 25
    }
}

将 jitpack 存储库添加到您的根 build.gradle:

allprojects {
	repositories {
	...
        maven { url 'https://jitpack.io' }
    }
}

添加对应用级别 build.gradle 的依赖:

dependencies {
    compile 'com.github.AnthonyFermin:DropDownView:1.0.1'
}

用途

JavaDocs

将视图添加到 xml:

<com.anthonyfdev.dropdownview.DropDownView
    android:id="@+id/drop_down_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:containerBackgroundColor="#b71c1c"
    app:overlayColor="#64000000"/>

注意:containerBackgroundColor 默认为 colorPrimary (#3F51B5 如果您没有定义) overlayColor 默认为 #99000000(黑色 60% alpha)

绑定视图:

dropDownView = (DropDownView) findViewById(R.id.drop_down_view);
collapsedView = LayoutInflater.from(this).inflate(R.layout.view_my_drop_down_header, null, false);
expandedView = LayoutInflater.from(this).inflate(R.layout.view_my_drop_down_expanded, null, false);

将标题和扩展视图设置为 DropDownView:

dropDownView.setHeaderView(collapsedView);
dropDownView.setExpandedView(expandedView);

调用展开或折叠:

collapsedView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (dropDownView.isExpanded()) {
            dropDownView.collapseDropDown();
        } else {
            dropDownView.expandDropDown();
        }
    }
});

可选DropDownListener:

/**
* 一个侦听器,用于包装下拉列表成功展开时要执行的功能
* or collapsed.
*/
private final DropDownView.DropDownListener dropDownListener = new DropDownView.DropDownListener() {
	@Override
	public void onExpandDropDown() {
	    adapter.notifyDataSetChanged();
	    ObjectAnimator.ofFloat(headerChevronIV, View.ROTATION.getName(), 180).start();
	}
  
	@Override
	public void onCollapseDropDown() {
	    ObjectAnimator.ofFloat(headerChevronIV, View.ROTATION.getName(), -180, 0).start();
	}
    };
     
...
 
dropDownView.setDropDownListener(dropDownListener);

完成!

相关文章

精彩推荐