android仿京东首页下拉渐变搜索框背景

                   

在这里是结合recyclerview一起使用的,为recyclerview设置setOnScrollListener监听事件。

recyclerview.setOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
        //防止item乱跳
        //staggeredGridLayoutManager.invalidateSpanAssignments();
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        //滑动的距离
        mDistanceY += dy;
        //toolbar的高度
        int toolbarHeight = head_search_rr.getBottom();

        //当滑动的距离 <= toolbar高度的时候,改变Toolbar背景色的透明度,达到渐变的效果
        if (mDistanceY <= toolbarHeight) {
            float scale = (float) mDistanceY / toolbarHeight;
            float alpha = scale * 255;
            head_search_rr.setBackgroundColor(Color.argb((int) alpha, 255, 255, 255));
        } else {
            //将标题栏的颜色设置为完全不透明状态
            head_search_rr.setBackgroundResource(R.color.white);
        }
    }
});



点击进入github地址


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现下拉选择框并支持模糊搜索功能,可以使用 AutoCompleteTextView 控件。这个控件可以显示一个下拉列表,用户可以从中选择一个项。而且,AutoCompleteTextView 还可以根据用户输入的文本来过滤下拉列表中的项,从而实现模糊搜索的效果。 以下是实现这个功能的步骤: 1. 在布局文件中添加 AutoCompleteTextView 控件: ```xml <AutoCompleteTextView android:id="@+id/auto_complete_text_view" android:layout_width="match_parent" android:layout_height="wrap_content"/> ``` 2. 在代码中设置 AutoCompleteTextView 的 adapter,并为其设置数据源: ```java AutoCompleteTextView autoCompleteTextView = findViewById(R.id.auto_complete_text_view); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, COUNTRIES); autoCompleteTextView.setAdapter(adapter); ``` 在这里,COUNTRIES 是一个字符串数组,包含了所有可供选择的项。 3. 如果要支持模糊搜索,可以为 AutoCompleteTextView 设置一个过滤器: ```java autoCompleteTextView.setThreshold(1); // 输入一个字符就开始过滤 autoCompleteTextView.setFilter(new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); List<String> filteredList = new ArrayList<>(); for (String country : COUNTRIES) { if (country.toLowerCase().contains(constraint.toString().toLowerCase())) { filteredList.add(country); } } results.values = filteredList; results.count = filteredList.size(); return results; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { ArrayAdapter<String> adapter = (ArrayAdapter<String>) autoCompleteTextView.getAdapter(); adapter.clear(); if (results.count > 0) { adapter.addAll((List<String>) results.values); adapter.notifyDataSetChanged(); } } }); ``` 在这里,performFiltering() 方法会根据用户输入的文本(即 constraint 参数)来过滤数据源(即 COUNTRIES 数组),并返回过滤后的结果。publishResults() 方法则会将过滤后的结果更新到 adapter 中,从而刷新下拉列表的显示。 现在,当用户在 AutoCompleteTextView 中输入文本时,下拉列表就会根据输入内容进行过滤,并显示符合条件的项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值