diff options
author | Dominik <dominik@dominikschuermann.de> | 2012-03-11 17:33:40 +0100 |
---|---|---|
committer | Dominik <dominik@dominikschuermann.de> | 2012-03-11 17:33:40 +0100 |
commit | 9b32cf87e2aaa01926cddbb1700b41eed4576dfb (patch) | |
tree | b165dbde9c14ee77a029e7d4f1babae00769e216 /com_actionbarsherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java | |
parent | e9c0d7a71157fdff3c4951d91d7a5bc6d1956ef0 (diff) | |
download | open-keychain-9b32cf87e2aaa01926cddbb1700b41eed4576dfb.tar.gz open-keychain-9b32cf87e2aaa01926cddbb1700b41eed4576dfb.tar.bz2 open-keychain-9b32cf87e2aaa01926cddbb1700b41eed4576dfb.zip |
Started using ActionBarSherlock
Diffstat (limited to 'com_actionbarsherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java')
-rw-r--r-- | com_actionbarsherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/com_actionbarsherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java b/com_actionbarsherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java new file mode 100644 index 000000000..ad1b4f0a8 --- /dev/null +++ b/com_actionbarsherlock/src/com/actionbarsherlock/internal/widget/FakeDialogPhoneWindow.java @@ -0,0 +1,64 @@ +package com.actionbarsherlock.internal.widget; + +import static android.view.View.MeasureSpec.EXACTLY; +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.widget.LinearLayout; +import com.actionbarsherlock.R; + +public class FakeDialogPhoneWindow extends LinearLayout { + final TypedValue mMinWidthMajor = new TypedValue(); + final TypedValue mMinWidthMinor = new TypedValue(); + + public FakeDialogPhoneWindow(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SherlockTheme); + + a.getValue(R.styleable.SherlockTheme_windowMinWidthMajor, mMinWidthMajor); + a.getValue(R.styleable.SherlockTheme_windowMinWidthMinor, mMinWidthMinor); + + a.recycle(); + } + + /* Stolen from PhoneWindow */ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); + final boolean isPortrait = metrics.widthPixels < metrics.heightPixels; + + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + int width = getMeasuredWidth(); + boolean measure = false; + + widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, EXACTLY); + + final TypedValue tv = isPortrait ? mMinWidthMinor : mMinWidthMajor; + + if (tv.type != TypedValue.TYPE_NULL) { + final int min; + if (tv.type == TypedValue.TYPE_DIMENSION) { + min = (int)tv.getDimension(metrics); + } else if (tv.type == TypedValue.TYPE_FRACTION) { + min = (int)tv.getFraction(metrics.widthPixels, metrics.widthPixels); + } else { + min = 0; + } + + if (width < min) { + widthMeasureSpec = MeasureSpec.makeMeasureSpec(min, EXACTLY); + measure = true; + } + } + + // TODO: Support height? + + if (measure) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + } +} |