Skip to content

Commit 135d725

Browse files
committed
Merge pull request #35 from sherpya/master
fixed rotation when using android:configChanges
2 parents ba6d45b + 65a2e0f commit 135d725

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

ColorPickerPreference/src/main/java/net/margaritov/preference/colorpicker/ColorPickerDialog.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import android.view.KeyEvent;
2828
import android.view.LayoutInflater;
2929
import android.view.View;
30+
import android.view.ViewTreeObserver;
3031
import android.view.inputmethod.EditorInfo;
3132
import android.view.inputmethod.InputMethodManager;
3233
import android.widget.EditText;
@@ -40,7 +41,7 @@ public class ColorPickerDialog
4041
Dialog
4142
implements
4243
ColorPickerView.OnColorChangedListener,
43-
View.OnClickListener {
44+
View.OnClickListener, ViewTreeObserver.OnGlobalLayoutListener {
4445

4546
private ColorPickerView mColorPicker;
4647

@@ -52,6 +53,20 @@ public class ColorPickerDialog
5253
private ColorStateList mHexDefaultTextColor;
5354

5455
private OnColorChangedListener mListener;
56+
private int mOrientation;
57+
private View mLayout;
58+
59+
@Override
60+
public void onGlobalLayout() {
61+
if (getContext().getResources().getConfiguration().orientation != mOrientation) {
62+
final int oldcolor = mOldColor.getColor();
63+
final int newcolor = mNewColor.getColor();
64+
mLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
65+
setUp(oldcolor);
66+
mNewColor.setColor(newcolor);
67+
mColorPicker.setColor(newcolor);
68+
}
69+
}
5570

5671
public interface OnColorChangedListener {
5772
public void onColorChanged(int color);
@@ -75,17 +90,19 @@ private void setUp(int color) {
7590

7691
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
7792

78-
View layout = inflater.inflate(R.layout.dialog_color_picker, null);
93+
mLayout = inflater.inflate(R.layout.dialog_color_picker, null);
94+
mLayout.getViewTreeObserver().addOnGlobalLayoutListener(this);
7995

80-
setContentView(layout);
96+
mOrientation = getContext().getResources().getConfiguration().orientation;
97+
setContentView(mLayout);
8198

8299
setTitle(R.string.dialog_color_picker);
83100

84-
mColorPicker = (ColorPickerView) layout.findViewById(R.id.color_picker_view);
85-
mOldColor = (ColorPickerPanelView) layout.findViewById(R.id.old_color_panel);
86-
mNewColor = (ColorPickerPanelView) layout.findViewById(R.id.new_color_panel);
101+
mColorPicker = (ColorPickerView) mLayout.findViewById(R.id.color_picker_view);
102+
mOldColor = (ColorPickerPanelView) mLayout.findViewById(R.id.old_color_panel);
103+
mNewColor = (ColorPickerPanelView) mLayout.findViewById(R.id.new_color_panel);
87104

88-
mHexVal = (EditText) layout.findViewById(R.id.hex_val);
105+
mHexVal = (EditText) mLayout.findViewById(R.id.hex_val);
89106
mHexVal.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
90107
mHexDefaultTextColor = mHexVal.getTextColors();
91108

0 commit comments

Comments
 (0)