Skip to content

Commit 4279e44

Browse files
committed
ConfigPopup
1 parent a666214 commit 4279e44

File tree

8 files changed

+62
-22
lines changed

8 files changed

+62
-22
lines changed

app/src/main/java/com/mylhyl/circledialog/sample/list/ListViewActivity.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mylhyl.circledialog.sample.list;
22

3+
import android.graphics.Color;
34
import android.os.Bundle;
45
import android.support.design.widget.TabLayout;
56
import android.support.v7.app.AppCompatActivity;
@@ -20,6 +21,9 @@
2021
import com.chad.library.adapter.base.BaseQuickAdapter;
2122
import com.chad.library.adapter.base.BaseViewHolder;
2223
import com.mylhyl.circledialog.CircleDialog;
24+
import com.mylhyl.circledialog.callback.ConfigDialog;
25+
import com.mylhyl.circledialog.callback.ConfigPopup;
26+
import com.mylhyl.circledialog.params.DialogParams;
2327
import com.mylhyl.circledialog.params.PopupParams;
2428
import com.mylhyl.circledialog.sample.R;
2529
import com.mylhyl.circledialog.sample.entities.NavItemEntity;
@@ -51,10 +55,26 @@ protected void onCreate(Bundle savedInstanceState) {
5155
public void onClick(View v) {
5256
new CircleDialog.Builder()
5357
.setWidth(1f)
58+
.setRadius(0)
59+
.configDialog(new ConfigDialog() {
60+
@Override
61+
public void onConfig(DialogParams params) {
62+
params.backgroundColor = Color.parseColor("#8f8f8f");
63+
params.isDimEnabled = false;
64+
}
65+
})
5466
.setPopup(v, PopupParams.TRIANGLE_TOP_LEFT)
5567
.setPopupTriangleSize(50, 50)
5668
.setPopupTriangleShow(false)
57-
.setPopupItems(new String[]{"1", "2", "3", "4"}
69+
.configPopup(new ConfigPopup() {
70+
@Override
71+
public void onConfig(PopupParams params) {
72+
params.textGravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
73+
params.padding = new int[]{50, 0, 20, 0};
74+
params.textColor = Color.WHITE;
75+
}
76+
})
77+
.setPopupItems(new String[]{"全部", "广东省", "湖南省", "香港"}
5878
, new OnRvItemClickListener() {
5979
@Override
6080
public void onItemClick(View view, int position) {
@@ -84,7 +104,7 @@ public void onItemClick(View view, int position) {
84104
public void onClick(View v) {
85105
new CircleDialog.Builder()
86106
.setPopup(v, PopupParams.TRIANGLE_TOP_CENTER)
87-
.setPopupTriangleShow(false)
107+
// .setPopupTriangleShow(false)
88108
.setPopupItems(new String[]{"1", "2", "3", "4"}
89109
, new OnRvItemClickListener() {
90110
@Override

app/src/main/res/layout/activity_list_view.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<Button
4545
android:id="@+id/top_left"
4646
android:layout_width="100dp"
47+
android:background="#8f8f8f"
4748
android:layout_height="wrap_content"
4849
android:text="过滤"/>
4950

circledialog/src/main/java/com/mylhyl/circledialog/CircleDialog.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.mylhyl.circledialog.callback.ConfigDialog;
1919
import com.mylhyl.circledialog.callback.ConfigInput;
2020
import com.mylhyl.circledialog.callback.ConfigItems;
21+
import com.mylhyl.circledialog.callback.ConfigPopup;
2122
import com.mylhyl.circledialog.callback.ConfigProgress;
2223
import com.mylhyl.circledialog.callback.ConfigSubTitle;
2324
import com.mylhyl.circledialog.callback.ConfigText;
@@ -757,6 +758,12 @@ private void newPopupParams() {
757758
}
758759
}
759760

761+
public Builder configPopup(@NonNull ConfigPopup configPopup) {
762+
newPopupParams();
763+
configPopup.onConfig(mCircleParams.popupParams);
764+
return this;
765+
}
766+
760767
public Builder setPopupTriangleSize(int width, int height) {
761768
newPopupParams();
762769
mCircleParams.popupParams.triangleSize = new int[]{width, height};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.mylhyl.circledialog.callback;
2+
3+
import com.mylhyl.circledialog.params.PopupParams;
4+
5+
/**
6+
* Created by hupei on 2018/8/24.
7+
*/
8+
9+
public interface ConfigPopup {
10+
void onConfig(PopupParams params);
11+
}

circledialog/src/main/java/com/mylhyl/circledialog/params/ItemsParams.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.os.Parcelable;
55
import android.support.v7.widget.LinearLayoutManager;
66
import android.support.v7.widget.RecyclerView;
7+
import android.view.Gravity;
78
import android.widget.BaseAdapter;
89

910
import com.mylhyl.circledialog.res.values.CircleColor;
@@ -81,6 +82,8 @@ public ItemsParams[] newArray(int size) {
8182
*/
8283
public int bottomMargin = CircleDimen.BUTTON_ITEMS_MARGIN;
8384

85+
public int textGravity = Gravity.NO_GRAVITY;
86+
8487
public ItemsParams() {
8588
}
8689

@@ -95,6 +98,7 @@ protected ItemsParams(Parcel in) {
9598
this.isManualClose = in.readByte() != 0;
9699
this.linearLayoutManagerOrientation = in.readInt();
97100
this.bottomMargin = in.readInt();
101+
this.textGravity = in.readInt();
98102
}
99103

100104
@Override
@@ -114,5 +118,6 @@ public void writeToParcel(Parcel dest, int flags) {
114118
dest.writeByte(this.isManualClose ? (byte) 1 : (byte) 0);
115119
dest.writeInt(this.linearLayoutManagerOrientation);
116120
dest.writeInt(this.bottomMargin);
121+
dest.writeInt(this.textGravity);
117122
}
118123
}

circledialog/src/main/java/com/mylhyl/circledialog/view/BodyListView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.graphics.Color;
55
import android.graphics.drawable.ColorDrawable;
6+
import android.view.Gravity;
67
import android.view.View;
78
import android.view.ViewGroup;
89
import android.widget.AdapterView;
@@ -145,6 +146,8 @@ public View getView(int position, View convertView, ViewGroup parent) {
145146
textView.setAutoPadding(mItemsParams.padding[0], mItemsParams.padding[1]
146147
, mItemsParams.padding[2], mItemsParams.padding[3]);
147148
}
149+
if (mItemsParams.textGravity != Gravity.NO_GRAVITY)
150+
textView.setGravity(mItemsParams.textGravity);
148151
viewHolder.item = textView;
149152
convertView = textView;
150153
convertView.setTag(viewHolder);

circledialog/src/main/java/com/mylhyl/circledialog/view/BodyRecyclerView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.support.v7.widget.LinearLayoutManager;
1212
import android.support.v7.widget.RecyclerView;
1313
import android.support.v7.widget.StaggeredGridLayoutManager;
14+
import android.view.Gravity;
1415
import android.view.View;
1516
import android.view.ViewGroup;
1617
import android.widget.AdapterView;
@@ -207,6 +208,8 @@ public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
207208
}
208209
textView.setTextSize(mItemsParams.textSize);
209210
textView.setTextColor(mItemsParams.textColor);
211+
if (mItemsParams.textGravity != Gravity.NO_GRAVITY)
212+
textView.setGravity(mItemsParams.textGravity);
210213
textView.setHeight(mItemsParams.itemHeight);
211214
Holder holder = new Holder(textView, mItemClickListener);
212215
return holder;

circledialog/src/main/java/com/mylhyl/circledialog/view/BuildViewPopupImpl.java

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ public void buildBodyView() {
151151
mRoot = rootLinearLayout;
152152
if (popupParams.triangleShow) {
153153
mTriangleLinearLayout = new LinearLayout(mContext);
154+
mTriangleLinearLayout.setGravity(mTriangleGravity);
154155
if (mTriangleDirection == Gravity.TOP || mTriangleDirection == Gravity.BOTTOM) {
155156
mTriangleLinearLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
156157
} else {
@@ -208,7 +209,7 @@ public void refreshContent() {
208209
private void handleAtLocation(PopupParams popupParams, int bottom, int oldBottom
209210
, View.OnLayoutChangeListener layoutChangeListener) {
210211

211-
if (popupParams.triangleShow && mTriangleView != null) {
212+
if (popupParams.triangleShow && mTriangleLinearLayout != null && mTriangleView != null) {
212213
final LayoutParams triangleViewLayoutParams = (LayoutParams) mTriangleView.getLayoutParams();
213214
if (popupParams.triangleSize == null) {
214215
int triangleWidth = (int) (mParams.dialogParams.width * TRIANGLE_WEIGHT);
@@ -221,26 +222,15 @@ private void handleAtLocation(PopupParams popupParams, int bottom, int oldBottom
221222
}
222223

223224
if (bottom != 0 && oldBottom != 0 && bottom == oldBottom) {
224-
225225
popupParams.triangleOffSet = triangleViewLayoutParams.width;
226-
if (mTriangleDirection == Gravity.LEFT || mTriangleDirection == Gravity.RIGHT) {
227-
int topMargin = popupParams.triangleOffSet;
228-
if (mTriangleGravity == Gravity.CENTER_VERTICAL) {
229-
popupParams.triangleOffSet = (mRoot.getHeight() / 2);
230-
topMargin = popupParams.triangleOffSet - triangleViewLayoutParams.width / 2;
231-
} else if (mTriangleGravity == Gravity.BOTTOM) {
232-
topMargin = mRoot.getHeight() - popupParams.triangleOffSet * 2;
233-
}
234-
triangleViewLayoutParams.topMargin = topMargin;
235-
} else {
236-
int leftMargin = popupParams.triangleOffSet;
237-
if (mTriangleGravity == Gravity.CENTER_HORIZONTAL) {
238-
popupParams.triangleOffSet = (mRoot.getWidth() / 2);
239-
leftMargin = popupParams.triangleOffSet - triangleViewLayoutParams.width / 2;
240-
} else if (mTriangleGravity == Gravity.RIGHT) {
241-
leftMargin = mRoot.getWidth() - popupParams.triangleOffSet * 2;
242-
}
243-
triangleViewLayoutParams.leftMargin = leftMargin;
226+
if (mTriangleGravity == Gravity.LEFT) {
227+
triangleViewLayoutParams.leftMargin = popupParams.triangleOffSet;
228+
} else if (mTriangleGravity == Gravity.TOP) {
229+
triangleViewLayoutParams.topMargin = popupParams.triangleOffSet;
230+
} else if (mTriangleGravity == Gravity.RIGHT) {
231+
triangleViewLayoutParams.rightMargin = popupParams.triangleOffSet;
232+
} else if (mTriangleGravity == Gravity.BOTTOM) {
233+
triangleViewLayoutParams.bottomMargin = popupParams.triangleOffSet;
244234
}
245235

246236
mRemoveOnLayoutChangeListenerStrategy.add(oldBottom);

0 commit comments

Comments
 (0)