Turn the eject menu into a button.

BUG=21897892

Change-Id: Icd0db7907b990447c99c4ae65816e85777df0f8e
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index baf04d4..74c60a8 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -83,6 +83,7 @@
 
     private ViewGroup mPinnedHeaderFrameLayout;
     private FloatingActionButton mFloatingActionButton;
+    private ViewGroup mButtonBar;
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -105,6 +106,7 @@
         final View root = super.onCreateView(inflater, container, savedInstanceState);
         mPinnedHeaderFrameLayout = (ViewGroup) root.findViewById(R.id.pinned_header);
         mFloatingActionButton = (FloatingActionButton) root.findViewById(R.id.fab);
+        mButtonBar = (ViewGroup) root.findViewById(R.id.button_bar);
         return root;
     }
 
@@ -112,6 +114,10 @@
         return mFloatingActionButton;
     }
 
+    public ViewGroup getButtonBar() {
+        return mButtonBar;
+    }
+
     public View setPinnedHeaderView(int layoutResId) {
         final LayoutInflater inflater = getActivity().getLayoutInflater();
         final View pinnedHeader =
diff --git a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
index 4c77d21..cb0fe0e 100644
--- a/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PublicVolumeSettings.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.UserManager;
@@ -32,6 +33,9 @@
 import android.text.TextUtils;
 import android.text.format.Formatter;
 import android.text.format.Formatter.BytesResult;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.util.Preconditions;
@@ -59,9 +63,9 @@
     private StorageSummaryPreference mSummary;
 
     private Preference mMount;
-    private Preference mUnmount;
     private Preference mFormatPublic;
     private Preference mFormatPrivate;
+    private Button mUnmount;
 
     private boolean mIsPermittedToAdopt;
 
@@ -111,13 +115,29 @@
         mSummary = new StorageSummaryPreference(context);
 
         mMount = buildAction(R.string.storage_menu_mount);
-        mUnmount = buildAction(R.string.storage_menu_unmount);
+        mUnmount = new Button(getActivity());
+        mUnmount.setText(R.string.storage_menu_unmount);
+        mUnmount.setOnClickListener(mUnmountListener);
         mFormatPublic = buildAction(R.string.storage_menu_format);
         if (mIsPermittedToAdopt) {
             mFormatPrivate = buildAction(R.string.storage_menu_format_private);
         }
     }
 
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        final Resources resources = getResources();
+        final int padding = resources.getDimensionPixelSize(
+                R.dimen.unmount_button_padding);
+        final ViewGroup buttonBar = getButtonBar();
+        buttonBar.removeAllViews();
+        buttonBar.setPadding(padding, padding, padding, padding);
+        buttonBar.addView(mUnmount, new ViewGroup.LayoutParams(
+                ViewGroup.LayoutParams.MATCH_PARENT,
+                ViewGroup.LayoutParams.WRAP_CONTENT));
+    }
+
     public void update() {
         if (!isVolumeValid()) {
             getActivity().finish();
@@ -151,7 +171,7 @@
             addPreference(mMount);
         }
         if (mVolume.isMountedReadable()) {
-            addPreference(mUnmount);
+            getButtonBar().setVisibility(View.VISIBLE);
         }
         addPreference(mFormatPublic);
         if (mDisk.isAdoptable() && mIsPermittedToAdopt) {
@@ -196,8 +216,6 @@
         final Context context = getActivity();
         if (pref == mMount) {
             new MountTask(context, mVolume).execute();
-        } else if (pref == mUnmount) {
-            new UnmountTask(context, mVolume).execute();
         } else if (pref == mFormatPublic) {
             final Intent intent = new Intent(context, StorageWizardFormatConfirm.class);
             intent.putExtra(DiskInfo.EXTRA_DISK_ID, mDisk.getId());
@@ -213,6 +231,13 @@
         return super.onPreferenceTreeClick(preferenceScreen, pref);
     }
 
+    private final View.OnClickListener mUnmountListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            new UnmountTask(getActivity(), mVolume).execute();
+        }
+    };
+
     private final StorageEventListener mStorageListener = new StorageEventListener() {
         @Override
         public void onVolumeStateChanged(VolumeInfo vol, int oldState, int newState) {