摘要:本文将带你了解Android应用开发Android:RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击),希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发Android:RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击),希望本文对大家学Android有所帮助。
主要是一个顶部的搜索栏加一个自定义的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
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频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号