diff --git a/ring-android/app/src/main/AndroidManifest.xml b/ring-android/app/src/main/AndroidManifest.xml
index 45c3e23..06a0cae 100644
--- a/ring-android/app/src/main/AndroidManifest.xml
+++ b/ring-android/app/src/main/AndroidManifest.xml
@@ -80,7 +80,7 @@
             android:label="@string/title_activity_sflphone_home"
             android:screenOrientation="portrait"
             android:theme="@style/AppThemeWithOverlay"
-            android:windowSoftInputMode="adjustPan"
+            android:windowSoftInputMode="adjustResize"
             android:launchMode="singleTask">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
index ad9733c..8aacb34 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java
@@ -36,6 +36,7 @@
 import android.support.v4.view.MenuItemCompat;
 import android.support.v7.widget.SearchView;
 import android.support.v7.widget.Toolbar;
+import android.text.InputType;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -187,7 +188,7 @@
     }
 
     @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+    public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) {
         inflater.inflate(R.menu.call_list_menu, menu);
         searchMenuItem = menu.findItem(R.id.menu_contact_search);
         dialpadMenuItem = menu.findItem(R.id.menu_contact_dial);
@@ -200,6 +201,7 @@
                 contactList.setAdapter(null);
                 contactList.setVisibility(View.GONE);
                 newconv_btn.setVisibility(View.VISIBLE);
+                setOverflowMenuVisible(menu, true);
                 setLoading(false);
                 return true;
             }
@@ -212,6 +214,7 @@
                 list.setVisibility(View.GONE);
                 newconv_btn.setVisibility(View.GONE);
                 onLoadFinished(null, mCallbacks.getService().getSortedContacts());
+                setOverflowMenuVisible(menu, false);
                 setLoading(false);
                 return true;
             }
@@ -240,7 +243,9 @@
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.menu_contact_search:
-                searchView.setInputType(EditorInfo.TYPE_CLASS_TEXT);
+                searchView.setInputType(EditorInfo.TYPE_CLASS_TEXT
+                        | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS
+                );
                 return false;
             case R.id.menu_contact_dial:
                 if (searchView.getInputType() == EditorInfo.TYPE_CLASS_PHONE)
@@ -579,4 +584,23 @@
             list.setEmptyView(this.mEmptyTextView);
         }
     }
+
+    /**
+     * Handles the visibility of some menus to hide / show the overflow menu
+     * @param menu the menu containing the menuitems we need to access
+     * @param visible true to display the overflow menu, false otherwise
+     */
+    private void setOverflowMenuVisible(final Menu menu, boolean visible) {
+        if (null != menu) {
+            MenuItem scanQrMenuItem = menu.findItem(R.id.menu_scan_qr);
+            MenuItem clearHistoryMenuItem = menu.findItem(R.id.menu_clear_history);
+
+            if (null != scanQrMenuItem) {
+                scanQrMenuItem.setVisible(visible);
+            }
+            if (null != clearHistoryMenuItem) {
+                clearHistoryMenuItem.setVisible(visible);
+            }
+        }
+    }
 }
diff --git a/ring-android/app/src/main/java/cx/ring/loaders/ContactsLoader.java b/ring-android/app/src/main/java/cx/ring/loaders/ContactsLoader.java
index 434e102..43c38ee 100644
--- a/ring-android/app/src/main/java/cx/ring/loaders/ContactsLoader.java
+++ b/ring-android/app/src/main/java/cx/ring/loaders/ContactsLoader.java
@@ -21,14 +21,6 @@
 
 package cx.ring.loaders;
 
-import java.util.ArrayList;
-
-import cx.ring.R;
-import cx.ring.fragments.SettingsFragment;
-import cx.ring.model.CallContact;
-import cx.ring.model.SipUri;
-import cx.ring.service.LocalService;
-
 import android.Manifest;
 import android.content.AsyncTaskLoader;
 import android.content.ContentResolver;
@@ -39,13 +31,20 @@
 import android.os.OperationCanceledException;
 import android.preference.PreferenceManager;
 import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.CommonDataKinds.Phone;
 import android.provider.ContactsContract.CommonDataKinds.SipAddress;
-import android.provider.ContactsContract.CommonDataKinds.Im;
 import android.provider.ContactsContract.Contacts;
 import android.util.Log;
 import android.util.LongSparseArray;
 
+import java.util.ArrayList;
+
+import cx.ring.R;
+import cx.ring.model.CallContact;
+import cx.ring.model.SipUri;
+import cx.ring.service.LocalService;
+
 public class ContactsLoader extends AsyncTaskLoader<ContactsLoader.Result>
 {
     private static final String TAG = ContactsLoader.class.getSimpleName();
@@ -75,7 +74,7 @@
             Im.CUSTOM_PROTOCOL
     };
 
-    static private final String SELECT = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND (" + Contacts.HAS_PHONE_NUMBER + "=1) AND (" + Contacts.DISPLAY_NAME + " != '' ))";
+    static private final String SELECT = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND (" + Contacts.DISPLAY_NAME + " != '' ))";
 
     private final Uri baseUri;
     private final LongSparseArray<CallContact> filterFrom;
diff --git a/ring-android/app/src/main/res/menu/call_list_menu.xml b/ring-android/app/src/main/res/menu/call_list_menu.xml
index 8d61238..73288a4 100644
--- a/ring-android/app/src/main/res/menu/call_list_menu.xml
+++ b/ring-android/app/src/main/res/menu/call_list_menu.xml
@@ -1,24 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:tools="http://schemas.android.com/tools"
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     tools:context=".client.HomeActivity">
 
-    <item android:id="@+id/menu_contact_search"
+    <item
+        android:id="@+id/menu_contact_search"
         android:actionViewClass="android.widget.SearchView"
-        android:icon="@drawable/ic_call_white_24dp"
-        android:title="@string/searchbar_hint"
         android:hint="@string/searchbar_hint"
+        android:icon="@drawable/ic_search_white_24dp"
+        android:title="@string/searchbar_hint"
         app:actionViewClass="android.support.v7.widget.SearchView"
         app:showAsAction="collapseActionView|ifRoom" />
 
-    <item android:id="@+id/menu_contact_dial"
+    <item
+        android:id="@+id/menu_contact_dial"
         android:icon="@drawable/ic_dialpad_white_24dp"
         android:title="@string/dial_number"
-        app:showAsAction="always"
-        android:visible="false"/>
+        android:visible="false"
+        app:showAsAction="always" />
 
-    <item android:id="@+id/menu_scan_qr"
+    <item
+        android:id="@+id/menu_scan_qr"
         android:icon="@drawable/ic_action_remove"
         android:title="@string/scan_qr"
         app:showAsAction="never" />
@@ -28,5 +31,5 @@
         android:icon="@drawable/ic_action_remove"
         android:orderInCategory="100"
         android:title="@string/ab_clear_history"
-        app:showAsAction="never"/>
+        app:showAsAction="never" />
 </menu>
\ No newline at end of file
