Android应用开发Android:RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击)
白羽 2019-05-20 来源 :网络 阅读 3204 评论 0

摘要:本文将带你了解Android应用开发Android:RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击),希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android:RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击),希望本文对大家学Android有所帮助。


Android应用开发Android:RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击)



     
         
   

    主要是一个顶部的搜索栏加一个自定义的recyclerview。
      其中将edittext控件的父布局的focusable和focusableInTouchMode属性设置为true可避免一显示该界面就自动弹出输入法。

  
    public class MingRecyclerView extends RecyclerView {
        private int mFirstY;
        public MingRecyclerView(Context   context) {
            super(context);
        }
     
        public MingRecyclerView(Context   context, @Nullable AttributeSet attrs) {
            super(context, attrs);
        }
     
        public MingRecyclerView(Context   context, @Nullable AttributeSet attrs, int defStyle) {
            super(context, attrs,   defStyle);
        }
     
        @Override
        public boolean   onInterceptTouchEvent(MotionEvent e) {
              if(e.getAction()==MotionEvent.ACTION_DOWN)mFirstY= (int)   e.getY();
            return   super.onInterceptTouchEvent(e);
        }
     
        @Override
        public boolean performClick()   {
            return super.performClick();
        }
     
        public int getTouchPointY()   {
            return mFirstY;
        }
    }
    关键点是onInterceptTouchEvent方法,用于获取手指接触屏幕时触摸点的y轴坐标。
    由于实现了OnTouchListener监听,所以复写performClick方法以消除警告。
   
    主界面:
   
 
    public class MainActivity extends Activity {
        private View searchBar;
        private EditText editText;
        private ImageView   queryButton;
        private MingRecyclerView recyclerView;
        private List  data;
        int mFirstY, mCurrentY,   marginTop;
        boolean direction;
     
        @Override
        protected void onCreate(Bundle   savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
     
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
     
            data = new   ArrayList<>();
            data.add(new MainItemBean(R.drawable.ic_launcher_background,   "头条"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "社会"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "国内"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "国际"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "娱乐"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "体育"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "军事"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "科技"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "财经"));
            data.add(new   MainItemBean(R.drawable.ic_launcher_background, "时尚"));
     
            initView();
        }
     
        private void initView() {
            marginTop =   DisplayUtil.dp2px(this, 85); //顶部搜索栏高度为85dp,转为像素值255
            MainListAdapter adapter = new   MainListAdapter(this, data);
              adapter.setOnItemClickListener(new   MainListAdapter.OnItemClickListener() {
                @Override
                public void   onItemClick(View view, int position) {
                      Toast.makeText(MainActivity.this, data.get(position).getTitle(),   Toast.LENGTH_SHORT).show();
                }
            });
            searchBar =   findViewById(R.id.search_bar);
              editText=findViewById(R.id.exit_text);
              queryButton=findViewById(R.id.query_button);
              queryButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View   view) {
                    String   query=editText.getText().toString();
     
                }
            });
     
            recyclerView =   findViewById(R.id.list_view);
              recyclerView.setLayoutManager(new LinearLayoutManager(this,   OrientationHelper.VERTICAL, false));
              recyclerView.setAdapter(adapter);
     
     
            recyclerView.setOnTouchListener(new   View.OnTouchListener() {
                  @SuppressLint("ClickableViewAccessibility")
                @Override
                public boolean   onTouch(View view, MotionEvent motionEvent) {
     
                    switch   (motionEvent.getAction()) {
                        case   MotionEvent.ACTION_MOVE:
                              mFirstY=recyclerView.getTouchPointY();
          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 2
看完这篇文章有何感觉?已经有3人表态,33%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程