diff --git a/app/src/main/java/app/fedilab/android/activities/SearchResultTabActivity.java b/app/src/main/java/app/fedilab/android/activities/SearchResultTabActivity.java index ecccda936..c80cd0c2a 100644 --- a/app/src/main/java/app/fedilab/android/activities/SearchResultTabActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/SearchResultTabActivity.java @@ -22,6 +22,7 @@ import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.inputmethod.InputMethodManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -29,6 +30,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; +import androidx.appcompat.widget.SearchView; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -61,7 +63,8 @@ public class SearchResultTabActivity extends BaseActivity { private String search; private TabLayout tabLayout; private ViewPager search_viewpager; - + private SearchView toolbar_search; + private TextView toolbar_title; @Override protected void onCreate(Bundle savedInstanceState) { @@ -104,12 +107,13 @@ public class SearchResultTabActivity extends BaseActivity { if (actionBar != null) { LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE); assert inflater != null; - View view = inflater.inflate(R.layout.simple_bar, new LinearLayout(getApplicationContext()), false); + View view = inflater.inflate(R.layout.simple_bar_search, new LinearLayout(getApplicationContext()), false); view.setBackground(new ColorDrawable(ContextCompat.getColor(SearchResultTabActivity.this, R.color.cyanea_primary))); actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + toolbar_search = actionBar.getCustomView().findViewById(R.id.toolbar_search); ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); - TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); + toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); toolbar_close.setOnClickListener(v -> finish()); toolbar_title.setText(search); } @@ -119,26 +123,54 @@ public class SearchResultTabActivity extends BaseActivity { tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.toots))); tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.action_cache))); + toolbar_search.setIconified(true); + toolbar_search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + @Override + public boolean onQueryTextSubmit(String query) { + InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); + assert imm != null; + imm.hideSoftInputFromWindow(toolbar_search.getWindowToken(), 0); + query = query.replaceAll("^#+", ""); + search = query.trim(); + PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); + search_viewpager.setAdapter(mPagerAdapter); + toolbar_search.clearFocus(); + toolbar_title.setText(search); + toolbar_title.setVisibility(View.VISIBLE); + toolbar_title.requestFocus(); + toolbar_search.setIconified(true); + toolbar_search.setIconified(true); + return false; + } + @Override + public boolean onQueryTextChange(String newText) { + return false; + } + }); + toolbar_search.setOnCloseListener(() -> { + toolbar_title.setText(search); + toolbar_title.setVisibility(View.VISIBLE); + return false; + }); + toolbar_search.setOnSearchClickListener(v -> { + toolbar_search.setQuery(search, false); + toolbar_title.setVisibility(View.GONE); + }); PagerAdapter mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); search_viewpager.setAdapter(mPagerAdapter); search_viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - } - @Override public void onPageSelected(int position) { TabLayout.Tab tab = tabLayout.getTabAt(position); if (tab != null) tab.select(); } - @Override - public void onPageScrollStateChanged(int state) { - - } + public void onPageScrollStateChanged(int state) {} }); tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { diff --git a/app/src/main/res/layout/simple_bar_search.xml b/app/src/main/res/layout/simple_bar_search.xml index 3310950a8..6eb5dfe8b 100644 --- a/app/src/main/res/layout/simple_bar_search.xml +++ b/app/src/main/res/layout/simple_bar_search.xml @@ -1,5 +1,5 @@