如何解决android中应用栏搜索的特殊行为
我想在我的笔记应用中实现搜索功能。它可以工作,但是在单击搜索图标时,我的视图会向下推向键盘,如果不按后退按钮,我就无法向上移动。我附上两张图片。一张将显示应用屏幕的外观,另一张在按下搜索图标时显示。非常烦人的问题,可能是什么原因造成的?
MainActivity.java:
ArrayList<cardHandler> cardList;
private RecyclerView recyclerView;
private cardAdapter adapter;
private RecyclerView.LayoutManager layoutManager;
private Toolbar toolbar;
View main_view;
ExtendedFloatingActionButton floatingActionButton;
TextView NoNotesOrListView;
DatabaseHelperForNotes databaseHelperForNotes;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
databaseHelperForNotes = new DatabaseHelperForNotes(MainActivity.this);
NoNotesOrListView = findViewById(R.id.textView_fornolist);
main_view = findViewById(R.id.main_view);
recyclerView = findViewById(R.id.view_for_notes_list);
cardList = new ArrayList<>();
floatingActionButton = findViewById(R.id.createNewNote);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getNotesAndList();
recyclerView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View view,int x,int y,int oldX,int oldY) {
int scroll = y-oldY;
if (scroll>0){
floatingActionButton.hide();
}else if(scroll<0){
floatingActionButton.show();
floatingActionButton.extend();
}else {
floatingActionButton.show();
}
}
});
/*Integer deleted = databaseHelperForNotes.deleteAllData();
if (deleted<=0){
}else{
Toast.makeText(MainActivity.this,"Deleted All data.. ",Toast.LENGTH_SHORT).show();
}*/
}
private void getNotesAndList() {
String noteContent,noteTitle,noteDate;
int noteid;
Cursor cursor;
cursor = databaseHelperForNotes.viewDefault();
if (cursor == null || cursor.getCount()<=0){
NoNotesOrListView.setVisibility(View.VISIBLE);
NoNotesOrListView.append("Added items \nwill be shown here..."+"\n");
}else{
recyclerView.setVisibility(View.VISIBLE);
cursor.moveToLast();
do{
noteContent = cursor.getString(cursor.getColumnIndex("CONTENT"));
noteid = cursor.getInt(cursor.getColumnIndex("_id"));
noteTitle = cursor.getString(cursor.getColumnIndex("TITLE"));
noteDate = (String)cursor.getString(cursor.getColumnIndex("DATE"));
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MM-yyyy HH:mm",Locale.getDefault());
Date date = new Date();
String timeStamp;
String date_current = dateFormat.format(date);
if (date_current.substring(0,2).equals(noteDate.substring(0,2))){
timeStamp = "Today "+noteDate.substring(11);
}else if(Integer.parseInt(date_current.substring(0,2)) - Integer.parseInt(noteDate.substring(0,2)) == 1) {
timeStamp = "Yesterday "+noteDate.substring(11);
}else{
String month = noteDate.substring(3,5);
String monthName = new DateFormatSymbols().getMonths()[Integer.parseInt(month)-1];
timeStamp = noteDate.substring(0,2)+" "+monthName;
}
populateCards(MainActivity.this,noteContent,timeStamp,getRandomColor(),noteid);
cursor.moveToPrevious();
}while(!cursor.isBeforeFirst());
}
}
private void recyclerViewConfigure() {
//configure adapter
recyclerView = findViewById(R.id.view_for_notes_list);
//performance
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
adapter = new cardAdapter(cardList);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapter);
}
private void populateCards(Context con,String noteContent,String noteTitle,String date,int color,int id) {
cardList.add(new cardHandler(MainActivity.this,con,date,color,id));
recyclerViewConfigure();
}
@Override
protected void onActivityResult(int requestCode,int resultCode,@Nullable Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if (requestCode == 1){
recreate();
}
}
public int getRandomColor(){
String[] colors = {"#DBA9A9","#EAB9B9","#E7DDDC","#FFE7E4","#FFC388","#D6D1B4","#FFEC88","#F7F4C7","#D4EC88","#CCE7C7","#B1F2EC","#B4ECEA","#DBF6FA","#C7E8FD","#C6BDF8","#D9A5F9","#ECDFEC","#EAB7BD","#FB7E81","#F39FA1","#FFD9E0","#FF99EB","#C2BBEA"};
int idx = new Random().nextInt(colors.length);
String random = (colors[idx]);
int col = Color.parseColor(random);
try{
return col;
}catch (NumberFormatException e){
return 0;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu,menu);
MenuItem item = menu.findItem(R.id.app_bar_search);
androidx.appcompat.widget.SearchView searchView = (androidx.appcompat.widget.SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
public void createNewList(View view) {
Intent listIntent = new Intent(MainActivity.this,Create_List.class);
startActivity(listIntent);
}
public void createNewNote(View view) {
Intent noteIntent = new Intent(MainActivity.this,Create_Note.class);
startActivity(noteIntent);
}
}
mainmenu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/app_bar_search"
android:icon="@drawable/ic_search_black_24dp"
app:showAsAction="ifRoom|collapseActionView"
android:title="Search"
app:actionViewClass="androidx.appcompat.widget.SearchView" />
<item
android:title="Bookmarks"
android:id="@+id/access_bookmarked_notes"
/>
<item android:title="Locked Notes"
android:id="@+id/access_locked_notes"
/>
<item android:title="About"
android:id="@+id/access_about"/>
</menu>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。