android:layout_height="match_parent"
android:layout_alignParentTop="true" />
+ <View
+ android:id="@+id/history_status"
+ android:layout_width="match_parent"
+ android:layout_height="1dp"
+ android:layout_alignParentBottom="true"
+ android:visibility="invisible"/>
+
</RelativeLayout>
\ No newline at end of file
import com.cyanogenmod.filemanager.adapters.SimpleMenuListAdapter;
import com.cyanogenmod.filemanager.model.History;
import com.cyanogenmod.filemanager.ui.widgets.ButtonItem;
+import com.cyanogenmod.filemanager.util.AndroidHelper;
import com.cyanogenmod.filemanager.util.DialogHelper;
import java.util.ArrayList;
private boolean mIsEmpty;
private boolean mIsClearHistory;
+ private View mOptionsAnchorView;
+
/**
* Intent extra parameter for the history data.
*/
ButtonItem configuration = (ButtonItem)customTitle.findViewById(R.id.ab_button1);
configuration.setImageResource(R.drawable.ic_holo_light_overflow);
configuration.setContentDescription(getString(R.string.actionbar_button_overflow_cd));
- configuration.setVisibility(View.VISIBLE);
+
+ View status = findViewById(R.id.history_status);
+ boolean showOptionsMenu = AndroidHelper.showOptionsMenu(getApplicationContext());
+ configuration.setVisibility(showOptionsMenu ? View.VISIBLE : View.GONE);
+ this.mOptionsAnchorView = showOptionsMenu ? configuration : status;
getActionBar().setCustomView(customTitle);
}
switch (keyCode) {
case KeyEvent.KEYCODE_MENU:
if (!this.mIsEmpty) {
- showOverflowPopUp(findViewById(R.id.ab_button1));
+ showOverflowPopUp(this.mOptionsAnchorView);
}
return true;
case KeyEvent.KEYCODE_BACK:
import com.cyanogenmod.filemanager.ui.widgets.NavigationView.OnNavigationRequestMenuListener;
import com.cyanogenmod.filemanager.ui.widgets.NavigationView.OnNavigationSelectionChangedListener;
import com.cyanogenmod.filemanager.ui.widgets.SelectionView;
+import com.cyanogenmod.filemanager.util.AndroidHelper;
import com.cyanogenmod.filemanager.util.CommandHelper;
import com.cyanogenmod.filemanager.util.DialogHelper;
import com.cyanogenmod.filemanager.util.ExceptionUtil;
private boolean mExitFlag = false;
private long mExitBackTimeout = -1;
+ private View mOptionsAnchorView;
+
/**
* @hide
*/
}
}
});
+
+ // Have overflow menu?
+ View overflow = findViewById(R.id.ab_overflow);
+ boolean showOptionsMenu = AndroidHelper.showOptionsMenu(getApplicationContext());
+ overflow.setVisibility(showOptionsMenu ? View.VISIBLE : View.GONE);
+ this.mOptionsAnchorView = showOptionsMenu ? overflow : this.mActionBar;
}
/**
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
- showOverflowPopUp(findViewById(R.id.ab_overflow));
+ showOverflowPopUp(this.mOptionsAnchorView);
return true;
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
--- /dev/null
+/**
+ *
+ */
+package com.cyanogenmod.filemanager.util;
+
+import android.content.Context;
+import android.content.res.Configuration;
+import android.view.ViewConfiguration;
+
+/**
+ * A helper class with useful methods for deal with android.
+ */
+public final class AndroidHelper {
+
+ /**
+ * Method that returns if the device is a tablet
+ *
+ * @param ctx The current context
+ * @return boolean If device is a table
+ */
+ public static boolean isTablet(Context ctx) {
+ Configuration configuration = ctx.getResources().getConfiguration();
+ return (configuration.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
+ >= Configuration.SCREENLAYOUT_SIZE_LARGE;
+ }
+
+ /**
+ * Method that returns if an option menu has to be displayed
+ *
+ * @param ctx The current context
+ * @return boolean If an option menu has to be displayed
+ */
+ public static boolean showOptionsMenu(Context ctx) {
+ // Show overflow button?
+ return !ViewConfiguration.get(ctx).hasPermanentMenuKey();
+ }
+
+}