我想在我的notes应用程序中实现搜索功能。它可以工作,但单击搜索图标时,我的视图会向下按键盘,如果不按“后退”按钮,我就无法向上移动。我正在附加两张图片。一张显示应用程序屏幕的外观,另一张显示按下搜索图标时的外观。非常烦人的问题,是什么原因造成的?
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,noteTitle,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,noteTitle,noteContent,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","#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>
链接到两个屏幕
暂无答案!
目前还没有任何答案,快来回答吧!