diff --git a/res/layout/list_item_text.xml b/res/layout/list_item_text.xml deleted file mode 100644 index 767740934..000000000 --- a/res/layout/list_item_text.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - \ No newline at end of file diff --git a/src/com/hippo/ehviewer/ui/SettingsActivity.java b/src/com/hippo/ehviewer/ui/SettingsActivity.java index ed90409ba..1c729e0bd 100644 --- a/src/com/hippo/ehviewer/ui/SettingsActivity.java +++ b/src/com/hippo/ehviewer/ui/SettingsActivity.java @@ -30,7 +30,6 @@ import android.app.ActionBar; import android.app.AlertDialog; import android.content.Intent; import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -47,6 +46,7 @@ import android.webkit.WebView; import android.widget.AdapterView; import android.widget.CheckBox; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TableLayout; @@ -87,26 +87,16 @@ public class SettingsActivity extends AbsPreferenceActivity implements FitWindow private FitWindowView mStandard; private List mFragments; private ListView mListView; + private int mThemeColor; - public void adjustPadding(int paddingTop, int paddingBottom) { - mListView.setPadding(mListView.getPaddingLeft(), paddingTop, mListView.getPaddingRight(), paddingBottom); + public void adjustPadding(int t, int b) { + mListView.setPadding(mListView.getPaddingLeft(), t, mListView.getPaddingRight(), b); } - // @Override - // public void onOrientationChanged(int paddingTop, int paddingBottom) { - // for (TranslucentPreferenceFragment f : mFragments) { - // if (f.isVisible()) { - // f.adjustPadding(paddingTop, paddingBottom); - // return; - // } - // } - - // If no fragment is visible, just headers is shown - // adjustPadding(paddingTop, paddingBottom); - // } - @Override public void onFitSystemWindows(int l, int t, int r, int b) { + Ui.translucent(this, mThemeColor, t - Ui.ACTION_BAR_HEIGHT); + for (TranslucentPreferenceFragment f : mFragments) { if (f.isVisible()) { f.adjustPadding(t, b); @@ -121,12 +111,9 @@ public class SettingsActivity extends AbsPreferenceActivity implements FitWindow super.onCreate(savedInstanceState); // Set random color - int color = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor(); - color = color & 0x00ffffff | 0xdd000000; - Drawable drawable = new ColorDrawable(color); - final ActionBar actionBar = getActionBar(); - actionBar.setBackgroundDrawable(drawable); - Ui.translucent(this, color, 0); + mThemeColor = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor(); + ActionBar actionBar = getActionBar(); + actionBar.setBackgroundDrawable(new ColorDrawable(mThemeColor)); actionBar.setDisplayHomeAsUpEnabled(true); @@ -134,23 +121,13 @@ public class SettingsActivity extends AbsPreferenceActivity implements FitWindow mListView = getListView(); mListView.setClipToPadding(false); - - int listIndex = -1; - ViewGroup p = (ViewGroup) mListView.getParent(); - int size = p.getChildCount(); - for (int i = 0; i < size; i++) { - if (mListView == p.getChildAt(i)) { - listIndex = i; - break; - } - } - if (listIndex != -1) { - mStandard = new FitWindowView(this); - mStandard.addOnFitSystemWindowsListener(this); - p.addView(mStandard, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - } + + FrameLayout fl = (FrameLayout) getWindow().getDecorView().findViewById(android.R.id.content); + mStandard = new FitWindowView(this); + mStandard.addOnFitSystemWindowsListener(this); + fl.addView(mStandard, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT)); } @Override @@ -222,15 +199,11 @@ public class SettingsActivity extends AbsPreferenceActivity implements FitWindow && child instanceof ListView) { mListView = (ListView) child; mListView.setClipToPadding(false); - - int[] padding = new int[2]; - Ui.getWindowPadding(mActivity.getResources(), padding); - adjustPadding(padding[0], padding[1]); } } - public void adjustPadding(int paddingTop, int paddingBottom) { - mListView.setPadding(mListView.getPaddingLeft(), paddingTop, mListView.getPaddingRight(), paddingBottom); + public void adjustPadding(int t, int b) { + mListView.setPadding(mListView.getPaddingLeft(), t, mListView.getPaddingRight(), b); } } diff --git a/src/com/hippo/ehviewer/util/Ui.java b/src/com/hippo/ehviewer/util/Ui.java index 4c31d8944..1f9846e84 100644 --- a/src/com/hippo/ehviewer/util/Ui.java +++ b/src/com/hippo/ehviewer/util/Ui.java @@ -344,29 +344,31 @@ public class Ui { @TargetApi(Build.VERSION_CODES.KITKAT) public static void translucent(Activity activity, int color, int height) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - boolean needAdd = false; + View statusBarBgView; FrameLayout.LayoutParams lp; ViewGroup decorViewGroup = (ViewGroup) activity.getWindow().getDecorView(); - View statusBarBgView = (View) decorViewGroup.getTag(R.id.translucent_view); - if (statusBarBgView == null) { - needAdd = true; - statusBarBgView = new View(activity); - } - statusBarBgView.setBackgroundColor(color); - - lp = (FrameLayout.LayoutParams) statusBarBgView.getLayoutParams(); - if (lp == null) - lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, height); - else + // Try to find old translucent view + if (decorViewGroup.getChildCount() > 1 && + (statusBarBgView = decorViewGroup.getChildAt(1)) != null && + statusBarBgView.getId() == R.id.translucent_view) { + lp = (LayoutParams) statusBarBgView.getLayoutParams(); lp.height = height; - lp.gravity = Gravity.TOP; - - if (needAdd) { - decorViewGroup.addView(statusBarBgView, lp); - decorViewGroup.setTag(R.id.translucent_view, statusBarBgView); - } else { + lp.gravity = Gravity.TOP; + statusBarBgView.setBackgroundColor(color); statusBarBgView.setLayoutParams(lp); + + Log.d(TAG, "translucent new"); + } else { + statusBarBgView = new View(activity); + statusBarBgView.setId(R.id.translucent_view); + statusBarBgView.setBackgroundColor(color); + lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, height); + lp.gravity = Gravity.TOP; + decorViewGroup.addView(statusBarBgView, lp); + + + Log.d(TAG, "translucent update"); } } }