]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryActivity.java
Hide virtual keyboard if searchView text was changed programatically.
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryActivity.java
index 966b5b65d38c54cde3bb48b3b0e25792751854ac..c8d99e4f60328e4b440b1c9d280b08b9828b91b7 100644 (file)
@@ -33,6 +33,7 @@ import android.support.v7.app.ActionBar;
 import android.support.v7.app.ActionBarActivity;
 import android.support.v7.widget.SearchView;
 import android.support.v7.widget.SearchView.OnQueryTextListener;
+import android.support.v7.widget.Toolbar;
 import android.text.ClipboardManager;
 import android.text.Spannable;
 import android.text.method.LinkMovementMethod;
@@ -486,8 +487,6 @@ public class DictionaryActivity extends ActionBarActivity {
         });
 
         languageButton = new ImageButton(customSearchView.getContext());
-        languageButton.setMinimumWidth(application.languageButtonPixels);
-        languageButton.setMinimumHeight(application.languageButtonPixels * 2 / 3);
         languageButton.setScaleType(ScaleType.FIT_CENTER);
         languageButton.setOnClickListener(new OnClickListener() {
             @Override
@@ -502,7 +501,9 @@ public class DictionaryActivity extends ActionBarActivity {
                 return true;
             }
         });
-        customSearchView.addView(languageButton);
+        languageButton.setAdjustViewBounds(true);
+        LinearLayout.LayoutParams lpb = new LinearLayout.LayoutParams(application.languageButtonPixels, LinearLayout.LayoutParams.MATCH_PARENT);
+        customSearchView.addView(languageButton, lpb);
 
         searchView = new SearchView(getSupportActionBar().getThemedContext());
         searchView.setIconifiedByDefault(false);
@@ -540,6 +541,10 @@ public class DictionaryActivity extends ActionBarActivity {
 
         actionBar.setCustomView(customSearchView);
         actionBar.setDisplayShowCustomEnabled(true);
+
+       // Avoid wasting space on large left inset
+        Toolbar tb = (Toolbar)customSearchView.getParent();
+        tb.setContentInsetsRelative(0, 0);
     }
 
     @Override
@@ -633,6 +638,13 @@ public class DictionaryActivity extends ActionBarActivity {
         }
     }
 
+    private void hideKeyboard() {
+        Log.d(LOG, "Hide soft keyboard.");
+        searchView.clearFocus();
+        InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+        manager.hideSoftInputFromWindow(searchView.getWindowToken(), 0);
+    }
+
     void updateLangButton() {
         final LanguageResources languageResources =
                 DictionaryApplication.isoCodeToResources.get(index.shortName);
@@ -1001,7 +1013,7 @@ public class DictionaryActivity extends ActionBarActivity {
         getListView().requestFocus();
 
         // Visual indication that a new keystroke will clear the search text.
-        // Doesn't seem to work unless earchText has focus.
+        // Doesn't seem to work unless searchText has focus.
         // searchView.selectAll();
     }
 
@@ -1104,6 +1116,9 @@ public class DictionaryActivity extends ActionBarActivity {
         searchView.setIconifiedByDefault(text.length() > 0);
         searchView.setIconified(false);
 
+        // We don't want to show virtual keyboard when we're changing searchView text programatically:
+        hideKeyboard();
+
         if (triggerSearch) {
             onQueryTextListener.onQueryTextChange(text);
         }