diff options
author | Danny Baumann <dannybaumann@web.de> | 2016-03-27 14:31:16 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2016-04-03 04:41:55 -0700 |
commit | 222c665b32fcc14a97494c896c22012d10ddd8a3 (patch) | |
tree | c950b9cf8f26e97de6d42ec98d185335715ca381 /src/com/android/camera/ui/ListMenu.java | |
parent | ba9f88b3d6930bbd686e23672d3b1203dd1a3015 (diff) | |
download | android_packages_apps_Snap-222c665b32fcc14a97494c896c22012d10ddd8a3.tar.gz android_packages_apps_Snap-222c665b32fcc14a97494c896c22012d10ddd8a3.tar.bz2 android_packages_apps_Snap-222c665b32fcc14a97494c896c22012d10ddd8a3.zip |
Properly respect navigation bar size when laying out menus.
For top level menus, add padding so all menu items can be scrolled to
not be covered by the navigation bar. For sub menus, place them to not
be covered by the navigation bar.
Change-Id: I22961c19b7bf80a26eec03b5feabfda10e910669
Diffstat (limited to 'src/com/android/camera/ui/ListMenu.java')
-rw-r--r-- | src/com/android/camera/ui/ListMenu.java | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/src/com/android/camera/ui/ListMenu.java b/src/com/android/camera/ui/ListMenu.java index a1e145797..942822fec 100644 --- a/src/com/android/camera/ui/ListMenu.java +++ b/src/com/android/camera/ui/ListMenu.java @@ -22,6 +22,7 @@ package com.android.camera.ui; import java.util.ArrayList; import android.content.Context; +import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; @@ -31,6 +32,7 @@ import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; +import android.widget.Space; import com.android.camera.ListPreference; import com.android.camera.PreferenceGroup; @@ -38,13 +40,13 @@ import org.codeaurora.snapcam.R; /* A popup window that contains several camera settings. */ public class ListMenu extends ListView - implements ListMenuItem.Listener, - AdapterView.OnItemClickListener { + implements ListMenuItem.Listener, AdapterView.OnItemClickListener, RotateLayout.Child { @SuppressWarnings("unused") private static final String TAG = "ListMenu"; private int mHighlighted = -1; private Listener mListener; private ArrayList<ListPreference> mListItem = new ArrayList<ListPreference>(); + private View mHeader, mFooter; // Keep track of which setting items are disabled // e.g. White balance will be disabled when scene mode is set to non-auto @@ -109,6 +111,30 @@ public class ListMenu extends ListView } } + @Override + public void onApplyWindowInsets(Rect insets) { + if (mHeader == null) { + mHeader = new Space(getContext()); + addHeaderView(mHeader); + setHeaderDividersEnabled(false); + mFooter = new Space(getContext()); + addFooterView(mFooter); + setFooterDividersEnabled(false); + } + + adjustViewHeight(mHeader, insets.top); + adjustViewHeight(mFooter, insets.bottom); + } + + private void adjustViewHeight(View view, int height) { + ViewGroup.LayoutParams lp = view.getLayoutParams(); + if (lp == null) { + lp = generateDefaultLayoutParams(); + } + lp.height = height; + view.setLayoutParams(lp); + } + public void setSettingChangedListener(Listener listener) { mListener = listener; } @@ -204,7 +230,8 @@ public class ListMenu extends ListView @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - if (mListener != null) { + position -= getHeaderViewsCount(); + if (mListener != null && position < mListItem.size()) { resetHighlight(); ListPreference pref = mListItem.get(position); mHighlighted = position; |