diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index 903c363..71af567 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -367,6 +367,8 @@
         mFakeTitleHolder.setVisibility(View.GONE);
         mAddNewFolder.setVisibility(View.VISIBLE);
         mAddSeparator.setVisibility(View.VISIBLE);
+        getInputMethodManager().hideSoftInputFromWindow(
+                mListView.getWindowToken(), 0);
     }
 
     private void descendInto(String foldername, long id) {
diff --git a/src/com/android/browser/BreadCrumbView.java b/src/com/android/browser/BreadCrumbView.java
index 6706deb..aa77744 100644
--- a/src/com/android/browser/BreadCrumbView.java
+++ b/src/com/android/browser/BreadCrumbView.java
@@ -40,6 +40,7 @@
  */
 public class BreadCrumbView extends LinearLayout implements OnClickListener {
     private static final int DIVIDER_PADDING = 12; // dips
+    private static final int CRUMB_PADDING = 8; // dips
 
     public interface Controller {
         public void onTop(BreadCrumbView view, int level, Object data);
@@ -53,6 +54,7 @@
     private float mDividerPadding;
     private int mMaxVisible = -1;
     private Context mContext;
+    private int mCrumbPadding;
 
     /**
      * @param context
@@ -89,7 +91,9 @@
         TypedArray a = mContext.obtainStyledAttributes(com.android.internal.R.styleable.Theme);
         mSeparatorDrawable = a.getDrawable(com.android.internal.R.styleable.Theme_dividerVertical);
         a.recycle();
-        mDividerPadding = DIVIDER_PADDING * mContext.getResources().getDisplayMetrics().density;
+        float density = mContext.getResources().getDisplayMetrics().density;
+        mDividerPadding = DIVIDER_PADDING * density;
+        mCrumbPadding = (int) (CRUMB_PADDING * density);
         addBackButton();
     }
 
@@ -359,14 +363,12 @@
         private TextView makeCrumbView(String name) {
             TextView tv = new TextView(mContext);
             tv.setTextAppearance(mContext, android.R.style.TextAppearance_Medium);
-            tv.setPadding(16, 0, 16, 0);
+            tv.setPadding(mCrumbPadding, 0, mCrumbPadding, 0);
             tv.setGravity(Gravity.CENTER_VERTICAL);
             tv.setText(name);
             tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                     LayoutParams.MATCH_PARENT));
-            tv.setMaxWidth(mContext.getResources().getInteger(
-                    R.integer.max_width_crumb));
-            tv.setMaxLines(1);
+            tv.setSingleLine();
             tv.setEllipsize(TextUtils.TruncateAt.END);
             return tv;
         }
