Skip to content

Commit 1321364

Browse files
committed
popup
1 parent fcfb9a8 commit 1321364

File tree

3 files changed

+117
-32
lines changed

3 files changed

+117
-32
lines changed

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

Lines changed: 87 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,15 +121,86 @@ public void onItemClick(View view, int position) {
121121
}
122122
});
123123

124+
findViewById(R.id.bottom_left).setOnClickListener(new View.OnClickListener() {
125+
@Override
126+
public void onClick(View v) {
127+
new CircleDialog.Builder()
128+
.setPopupAnchor(v)
129+
.setPopupArrow(Gravity.BOTTOM, Gravity.LEFT)
130+
.setPopup(new String[]{"1", "2", "3", "4"}
131+
, new OnRvItemClickListener() {
132+
@Override
133+
public void onItemClick(View view, int position) {
134+
135+
}
136+
})
137+
.show(getSupportFragmentManager());
138+
}
139+
});
140+
findViewById(R.id.bottom_center).setOnClickListener(new View.OnClickListener() {
141+
@Override
142+
public void onClick(View v) {
143+
new CircleDialog.Builder()
144+
.setPopupAnchor(v)
145+
.setPopupArrow(Gravity.BOTTOM, Gravity.CENTER_HORIZONTAL)
146+
.setPopup(new String[]{"1", "2", "3", "4"}
147+
, new OnRvItemClickListener() {
148+
@Override
149+
public void onItemClick(View view, int position) {
150+
151+
}
152+
})
153+
.show(getSupportFragmentManager());
154+
}
155+
});
156+
157+
findViewById(R.id.bottom_right).setOnClickListener(new View.OnClickListener() {
158+
@Override
159+
public void onClick(View v) {
160+
new CircleDialog.Builder()
161+
.setPopupAnchor(v)
162+
.setPopupArrow(Gravity.BOTTOM, Gravity.RIGHT)
163+
.setPopup(new String[]{"1", "2", "3", "4"}
164+
, new OnRvItemClickListener() {
165+
@Override
166+
public void onItemClick(View view, int position) {
167+
168+
}
169+
})
170+
.show(getSupportFragmentManager());
171+
}
172+
});
173+
124174
TabLayout tabLayout = findViewById(R.id.tab);
175+
TextView tabItemHK = new TextView(this);
176+
tabItemHK.setLayoutParams(new TabLayout.LayoutParams(TabLayout.LayoutParams.MATCH_PARENT
177+
, TabLayout.LayoutParams.MATCH_PARENT));
178+
tabItemHK.setGravity(Gravity.CENTER);
179+
tabItemHK.setText("香港");
180+
tabLayout.addTab(tabLayout.newTab().setCustomView(tabItemHK));
181+
182+
TextView tabItemZH = new TextView(this);
183+
tabItemZH.setLayoutParams(new TabLayout.LayoutParams(TabLayout.LayoutParams.MATCH_PARENT
184+
, TabLayout.LayoutParams.MATCH_PARENT));
185+
tabItemZH.setGravity(Gravity.CENTER);
186+
tabItemZH.setText("珠海");
187+
tabLayout.addTab(tabLayout.newTab().setCustomView(tabItemZH));
188+
189+
TextView tabItemHN = new TextView(this);
190+
tabItemHN.setLayoutParams(new TabLayout.LayoutParams(TabLayout.LayoutParams.MATCH_PARENT
191+
, TabLayout.LayoutParams.MATCH_PARENT));
192+
tabItemHN.setGravity(Gravity.CENTER);
193+
tabItemHN.setText("湖南");
194+
tabLayout.addTab(tabLayout.newTab().setCustomView(tabItemHN));
195+
125196
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
126197
@Override
127198
public void onTabSelected(TabLayout.Tab tab) {
128199
switch (tab.getPosition()) {
129200
case 0:
130201
new CircleDialog.Builder()
131-
.setPopupAnchor(findViewById(R.id.tab_hk))
132-
.setPopupArrow(Gravity.BOTTOM, Gravity.LEFT)
202+
.setPopupAnchor(tabItemHK)
203+
.setPopupArrow(Gravity.BOTTOM, Gravity.CENTER_HORIZONTAL)
133204
.setPopup(new String[]{"1", "2", "3", "4"}
134205
, new OnRvItemClickListener() {
135206
@Override
@@ -141,7 +212,7 @@ public void onItemClick(View view, int position) {
141212
break;
142213
case 1:
143214
new CircleDialog.Builder()
144-
.setPopupAnchor(findViewById(R.id.tab_zh))
215+
.setPopupAnchor(tabItemZH)
145216
.setPopupArrow(Gravity.BOTTOM, Gravity.CENTER_HORIZONTAL)
146217
.setPopup(new String[]{"1", "2", "3", "4"}
147218
, new OnRvItemClickListener() {
@@ -154,8 +225,8 @@ public void onItemClick(View view, int position) {
154225
break;
155226
case 2:
156227
new CircleDialog.Builder()
157-
.setPopupAnchor(findViewById(R.id.tab_hn))
158-
.setPopupArrow(Gravity.BOTTOM, Gravity.RIGHT)
228+
.setPopupAnchor(tabItemHN)
229+
.setPopupArrow(Gravity.BOTTOM, Gravity.CENTER_HORIZONTAL)
159230
.setPopup(new String[]{"1", "2", "3", "4"}
160231
, new OnRvItemClickListener() {
161232
@Override
@@ -311,11 +382,17 @@ public boolean onOptionsItemSelected(MenuItem item) {
311382
return true;
312383
}
313384

314-
public void showMyDialog(String string) {
385+
public void showMyDialog(View anchor) {
315386
new CircleDialog.Builder()
316-
.setTitle("标题")
317-
.setText(string)
318-
.setPositive("确定", null)
387+
.setPopupAnchor(anchor)
388+
.setPopupArrow(Gravity.TOP, Gravity.CENTER_HORIZONTAL)
389+
.setPopup(new String[]{"1", "2", "3", "4"}
390+
, new OnRvItemClickListener() {
391+
@Override
392+
public void onItemClick(View view, int position) {
393+
394+
}
395+
})
319396
.show(getSupportFragmentManager());
320397
}
321398

@@ -352,7 +429,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
352429
parent, false);
353430
TextView textView = (TextView) view.findViewById(android.R.id.text1);
354431
textView.setText(getItem(position));
355-
textView.setOnClickListener(v -> activity.showMyDialog(((TextView) v).getText().toString()));
432+
textView.setOnClickListener(v -> activity.showMyDialog(view));
356433
return view;
357434
}
358435
}

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

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,31 @@
153153
</RelativeLayout>
154154
</LinearLayout>
155155

156+
<LinearLayout
157+
android:layout_width="match_parent"
158+
android:layout_height="wrap_content"
159+
android:layout_marginLeft="20dp"
160+
android:layout_marginRight="20dp"
161+
android:orientation="horizontal">
162+
163+
<Button
164+
android:id="@+id/bottom_left"
165+
android:layout_width="wrap_content"
166+
android:layout_height="wrap_content"
167+
android:text="下左"/>
168+
169+
<Button
170+
android:id="@+id/bottom_center"
171+
android:layout_width="wrap_content"
172+
android:layout_height="60dp"
173+
android:text="下中"/>
174+
175+
<Button
176+
android:id="@+id/bottom_right"
177+
android:layout_width="wrap_content"
178+
android:layout_height="wrap_content"
179+
android:text="下右"/>
180+
</LinearLayout>
156181

157182
<View
158183
android:layout_width="match_parent"
@@ -162,24 +187,5 @@
162187
<android.support.design.widget.TabLayout
163188
android:id="@+id/tab"
164189
android:layout_width="match_parent"
165-
android:layout_height="wrap_content">
166-
167-
<android.support.design.widget.TabItem
168-
android:id="@+id/tab_hk"
169-
android:layout_width="match_parent"
170-
android:layout_height="match_parent"
171-
android:text="香港"/>
172-
173-
<android.support.design.widget.TabItem
174-
android:id="@+id/tab_zh"
175-
android:layout_width="match_parent"
176-
android:layout_height="match_parent"
177-
android:text="珠海"/>
178-
179-
<android.support.design.widget.TabItem
180-
android:id="@+id/tab_hn"
181-
android:layout_width="match_parent"
182-
android:layout_height="match_parent"
183-
android:text="湖南"/>
184-
</android.support.design.widget.TabLayout>
190+
android:layout_height="wrap_content"/>
185191
</LinearLayout>

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,12 @@ void resizeDialogSize(DialogParams dialogParams, int arrowDirection, int arrowGr
162162
} else if (arrowGravity == Gravity.CENTER_VERTICAL) {
163163
dialogY = -1 * (screenHeight / 2 - location[1]) - mStatusBarHeight / 2 + view.getHeight() / 2;
164164
} else {
165-
if (arrowGravity == Gravity.LEFT || arrowGravity == Gravity.RIGHT || arrowGravity == Gravity.CENTER_HORIZONTAL) {
165+
if (arrowDirection == Gravity.TOP
166+
&& (arrowGravity == Gravity.LEFT || arrowGravity == Gravity.RIGHT
167+
|| arrowGravity == Gravity.CENTER_HORIZONTAL)) {
166168
dialogY = location[1] - mStatusBarHeight + view.getHeight();
167169
} else {
168-
dialogY = 0;
170+
dialogY = screenHeight - location[1];
169171
}
170172
}
171173
dialogParams.yOff = dialogY;

0 commit comments

Comments
 (0)