From 73a006a78c5a765776638468d77d23aedea11583 Mon Sep 17 00:00:00 2001 From: xujiaji Date: Sun, 7 Apr 2019 16:50:23 +0800 Subject: [PATCH] fix(position): fixed position issues and updated to v1.1.7 --- .idea/gradle.xml | 10 ++++-- README-cn.md | 26 +++++---------- README.md | 26 +++++---------- .../happybubbletest/CustomOperateDialog.java | 1 - .../happybubbletest/TestDialogActivity.java | 33 +++++++------------ .../main/res/layout/activity_test_dialog.xml | 2 +- build.gradle | 2 +- happy-bubble/build.gradle | 4 +-- .../com/xujiaji/happybubble/BubbleDialog.java | 30 +++++------------ happy-bubble/src/main/res/values/styles.xml | 2 +- 10 files changed, 49 insertions(+), 87 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2996d53..0e47707 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,11 +3,15 @@ diff --git a/README-cn.md b/README-cn.md index 581cf13..19eb4dd 100644 --- a/README-cn.md +++ b/README-cn.md @@ -1,5 +1,5 @@ # HappyBubble -[![GitHub release](https://img.shields.io/badge/Download-demo--apk-brightgreen.svg)](https://github.com/xujiaji/HappyBubble/releases) [![maven](https://img.shields.io/badge/bintray-1.1.6-brightgreen.svg)](https://bintray.com/xujiaji/maven/happy-bubble/1.1.6) +[![GitHub release](https://img.shields.io/badge/Download-demo--apk-brightgreen.svg)](https://github.com/xujiaji/HappyBubble/releases) [![maven](https://img.shields.io/badge/bintray-1.1.7-brightgreen.svg)](https://bintray.com/xujiaji/maven/happy-bubble/1.1.7) ![bubble](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/img5.png) @@ -12,6 +12,7 @@ [旧文档(Old README)](README-old.md) ## 更新 +- 1.1.7: 修复位置问题,修复`autoPosition`无效问题,修复横屏模式问题。[issues13](https://github.com/xujiaji/HappyBubble/issues/13) [issues11](https://github.com/xujiaji/HappyBubble/issues/11) [issues10](https://github.com/xujiaji/HappyBubble/issues/10) - 1.1.6:
[新增方向优先级:issues/9](https://github.com/xujiaji/HappyBubble/issues/9) - 1.1.5: @@ -46,7 +47,7 @@ ## 如何开始? 在你模块中的build.gradle添加上HappyBubble依赖 ``` -implementation 'com.github.xujiaji:happy-bubble:1.1.6' +implementation 'com.github.xujiaji:happy-bubble:1.1.7' ``` ## 如何使用 HappyBubble-BubbleDialog? @@ -57,7 +58,6 @@ implementation 'com.github.xujiaji:happy-bubble:1.1.6' |addContentView|View|添加填充在气泡中的视图| |setClickedView|View|被点击的View(触发Dialog出现的View)| |setPosition|enum ... `BubbleDialog.Position:LEFT, TOP, RIGHT, BOTTOM`|BubbleDialog相对于被点击的view的位置。如果传入多个位置,那么最前面的位置优先级越高| -|calBar|boolean|是否计算状态栏的高度(如果布局没有全屏,则需要计算)| |setOffsetX|int|如果您对dialog所展示的x轴位置不满,需要调整x轴方向偏移| |setOffsetY|int|如果您对dialog所展示的y轴位置不满,需要调整y轴方向偏移| |setBubbleLayout|BubbleLayout|自定义dialog的气泡布局| @@ -74,14 +74,10 @@ implementation 'com.github.xujiaji:happy-bubble:1.1.6' |-|-| |![exampel1](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/img_example1.png)|![exampel2](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/img_example2.png)| -> 需要提供:Context、填充的View、被点击的View。
-> 如果最外层布局没有全屏时,您需要计算状态栏的高度,否则会多向下偏移一个状态栏的高度。 - ``` java new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view3, null)) .setClickedView(mButton) - .calBar(true) .show(); ``` ### 向下偏移8dp @@ -92,7 +88,6 @@ new BubbleDialog(this) .setClickedView(mButton4) .setPosition(mPosition) .setOffsetY(8) - .calBar(true) .show(); ``` ### 当想要输入框随软键盘上移时 @@ -102,24 +97,23 @@ new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view, null)) .setClickedView(mButton12) .setPosition(mPosition) - .calBar(true) .softShowUp() .show(); ``` ### 自定义 BubbleLayout. -![exampel5](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/img_example5.png) +![exampel5](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/20190407164328.png) ``` java BubbleLayout bl = new BubbleLayout(this); -bl.setBubbleColor(Color.BLUE); +bl.setBubbleColor(Color.YELLOW); bl.setShadowColor(Color.RED); -bl.setLookLength(Util.dpToPx(this, 54)); -bl.setLookWidth(Util.dpToPx(this, 48)); +bl.setLookLength(Util.dpToPx(this, 18)); +bl.setLookWidth(Util.dpToPx(this, 24)); +bl.setBubbleRadius(Util.dpToPx(this, 3)); new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view5, null)) .setClickedView(mButton8) .setPosition(mPosition) - .calBar(true) .setBubbleLayout(bl) .show(); ``` @@ -171,7 +165,6 @@ public class CustomOperateDialog extends BubbleDialog implements View.OnClickLis public CustomOperateDialog(Context context) { super(context); - calBar(true); setTransParentBackground(); setPosition(Position.TOP); View rootView = LayoutInflater.from(context).inflate(R.layout.dialog_view4, null); @@ -244,8 +237,7 @@ if(mBubbleDialog == null) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view3, null)) .setClickedView(mButton4) .setPosition(mPosition) - .setOffsetY(8) - .calBar(true); + .setOffsetY(8); } mBubbleDialog.show(); ``` diff --git a/README.md b/README.md index ce4e0c8..a50d005 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # HappyBubble -[![GitHub release](https://img.shields.io/badge/Download-demo--apk-brightgreen.svg)](https://github.com/xujiaji/HappyBubble/releases) [![maven](https://img.shields.io/badge/bintray-1.1.6-brightgreen.svg)](https://bintray.com/xujiaji/maven/happy-bubble/1.1.6) +[![GitHub release](https://img.shields.io/badge/Download-demo--apk-brightgreen.svg)](https://github.com/xujiaji/HappyBubble/releases) [![maven](https://img.shields.io/badge/bintray-1.1.7-brightgreen.svg)](https://bintray.com/xujiaji/maven/happy-bubble/1.1.7) ![bubble](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/en/img5.png) @@ -11,6 +11,7 @@ Dialog according to click View position display; [Old README(旧文档)](README-old.md) ## update +- 1.1.7: fix position error, fix `autoPosition` invalid ... [#13](https://github.com/xujiaji/HappyBubble/issues/13) [#11](https://github.com/xujiaji/HappyBubble/issues/11) [#10](https://github.com/xujiaji/HappyBubble/issues/10) - 1.1.6:
[feat position priority: #9](https://github.com/xujiaji/HappyBubble/issues/9) - 1.1.5: @@ -43,7 +44,7 @@ Dialog according to click View position display; ## How to get started? Add HappyBubble dependency into your build.gradle ``` -implementation 'com.github.xujiaji:happy-bubble:1.1.6' +implementation 'com.github.xujiaji:happy-bubble:1.1.7' ``` ## How to use HappyBubble-BubbleDialog? @@ -54,7 +55,6 @@ implementation 'com.github.xujiaji:happy-bubble:1.1.6' |addContentView|View|Fill content view| |setClickedView|View|Clicked view| |setPosition|enum ... BubbleDialog.Position:LEFT, TOP, RIGHT, BOTTOM|BubbleDialog relative to the location of the view being clicked. If you pass in multiple locations, the higher the priority of the front position| -|calBar|boolean|Whether to calculate the status bar| |setOffsetX|int|If you are not satisfied with the x position, you need to adjust.| |setOffsetY|int|If you are not satisfied with the y position, you need to adjust.| |setBubbleLayout|BubbleLayout|Custom BubbleLayout| @@ -71,14 +71,10 @@ implementation 'com.github.xujiaji:happy-bubble:1.1.6' |-|-| |![exampel1](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/en/img_example1.png)|![exampel2](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/en/img_example2.png)| -> Need to provide Context, fill View, clicked View.
-> If the layout is not full screen then you need to calculate the status bar. - ``` java new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view3, null)) .setClickedView(mButton) - .calBar(true) .show(); ``` ### Off 8dp down. @@ -89,7 +85,6 @@ new BubbleDialog(this) .setClickedView(mButton4) .setPosition(mPosition) .setOffsetY(8) - .calBar(true) .show(); ``` ### When the input box is covered by the keyboard. @@ -99,24 +94,23 @@ new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view, null)) .setClickedView(mButton12) .setPosition(mPosition) - .calBar(true) .softShowUp() .show(); ``` ### Custom BubbleLayout. -![exampel5](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/en/img_example5.png) +![exampel5](https://raw.githubusercontent.com/xujiaji/xujiaji.github.io/pictures/github/HappyBubble/20190407164631.png) ``` java BubbleLayout bl = new BubbleLayout(this); -bl.setBubbleColor(Color.BLUE); +bl.setBubbleColor(Color.YELLOW); bl.setShadowColor(Color.RED); -bl.setLookLength(Util.dpToPx(this, 54)); -bl.setLookWidth(Util.dpToPx(this, 48)); +bl.setLookLength(Util.dpToPx(this, 18)); +bl.setLookWidth(Util.dpToPx(this, 24)); +bl.setBubbleRadius(Util.dpToPx(this, 3)); new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view5, null)) .setClickedView(mButton8) .setPosition(mPosition) - .calBar(true) .setBubbleLayout(bl) .show(); ``` @@ -168,7 +162,6 @@ public class CustomOperateDialog extends BubbleDialog implements View.OnClickLis public CustomOperateDialog(Context context) { super(context); - calBar(true); setTransParentBackground(); setPosition(Position.TOP); View rootView = LayoutInflater.from(context).inflate(R.layout.dialog_view4, null); @@ -241,8 +234,7 @@ if(mBubbleDialog == null) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view3, null)) .setClickedView(mButton4) .setPosition(mPosition) - .setOffsetY(8) - .calBar(true); + .setOffsetY(8); } mBubbleDialog.show(); ``` diff --git a/app/src/main/java/com/xujiaji/happybubbletest/CustomOperateDialog.java b/app/src/main/java/com/xujiaji/happybubbletest/CustomOperateDialog.java index 18b772e..8af1e30 100644 --- a/app/src/main/java/com/xujiaji/happybubbletest/CustomOperateDialog.java +++ b/app/src/main/java/com/xujiaji/happybubbletest/CustomOperateDialog.java @@ -21,7 +21,6 @@ public class CustomOperateDialog extends BubbleDialog implements View.OnClickLis public CustomOperateDialog(Context context) { super(context); - calBar(true); // setTransParentBackground(); setPosition(Position.TOP); View rootView = LayoutInflater.from(context).inflate(R.layout.dialog_view4, null); diff --git a/app/src/main/java/com/xujiaji/happybubbletest/TestDialogActivity.java b/app/src/main/java/com/xujiaji/happybubbletest/TestDialogActivity.java index bdac201..7860b1a 100644 --- a/app/src/main/java/com/xujiaji/happybubbletest/TestDialogActivity.java +++ b/app/src/main/java/com/xujiaji/happybubbletest/TestDialogActivity.java @@ -208,8 +208,7 @@ public void onClick(View v) .setClickedView(mButton) .setPosition(mPosition) .autoPosition(mAuto) - .setThroughEvent(mCheckBoxThrough.isChecked(), true) - .calBar(true); + .setThroughEvent(mCheckBoxThrough.isChecked(), true); mCurrentDialog.show(); break; @@ -220,8 +219,7 @@ public void onClick(View v) // .setClickedView(mButton2) // .setPosition(mPosition) // .autoPosition(isAuto) -// .setThroughEvent(mCheckBoxThrough.isChecked(), true) -// .calBar(true); +// .setThroughEvent(mCheckBoxThrough.isChecked(), true); // mCurrentDialog.show(); break; @@ -232,8 +230,7 @@ public void onClick(View v) // .setClickedView(mButton3) // .setPosition(mPosition) // .autoPosition(isAuto) -// .setThroughEvent(mCheckBoxThrough.isChecked(), true) -// .calBar(true); +// .setThroughEvent(mCheckBoxThrough.isChecked(), true); // mCurrentDialog.show(); break; @@ -243,9 +240,7 @@ public void onClick(View v) .setClickedView(mButton4) .setPosition(mPosition) .setOffsetY(8) - .autoPosition(mAuto) - .setThroughEvent(mCheckBoxThrough.isChecked(), true) - .calBar(true); + .autoPosition(mAuto); mCurrentDialog.show(); break; @@ -255,8 +250,7 @@ public void onClick(View v) .setClickedView(mButton5) .setPosition(mPosition) .autoPosition(mAuto) - .setThroughEvent(mCheckBoxThrough.isChecked(), true) - .calBar(true); + .setThroughEvent(mCheckBoxThrough.isChecked(), true); mCurrentDialog.show(); break; case R.id.button6: @@ -273,7 +267,6 @@ public void onClick(View v) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view3, null)) .setClickedView(mButton7) .setPosition(mPosition) - .calBar(true) .autoPosition(mAuto) .setThroughEvent(mCheckBoxThrough.isChecked(), true); mCurrentDialog.show(); @@ -281,15 +274,15 @@ public void onClick(View v) break; case R.id.button8: BubbleLayout bl = new BubbleLayout(this); - bl.setBubbleColor(Color.BLUE); + bl.setBubbleColor(Color.YELLOW); bl.setShadowColor(Color.RED); - bl.setLookLength(Util.dpToPx(this, 54)); - bl.setLookWidth(Util.dpToPx(this, 48)); + bl.setLookLength(Util.dpToPx(this, 18)); + bl.setLookWidth(Util.dpToPx(this, 24)); + bl.setBubbleRadius(Util.dpToPx(this, 3)); mCurrentDialog = new BubbleDialog(this) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view5, null)) .setClickedView(mButton8) .setPosition(mPosition) - .calBar(true) .setBubbleLayout(bl) .autoPosition(mAuto) .setThroughEvent(mCheckBoxThrough.isChecked(), true); @@ -330,8 +323,7 @@ public void onClick(String str) // .setClickedView(mButton11) // .setPosition(mPosition) // .autoPosition(isAuto) -// .setThroughEvent(mCheckBoxThrough.isChecked(), true) -// .calBar(true); +// .setThroughEvent(mCheckBoxThrough.isChecked(), true); // // mCurrentDialog.show(); @@ -339,7 +331,6 @@ public void onClick(String str) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view, null)) .setClickedView(mButton11) .setPosition(mPosition) - .calBar(true) .softShowUp() .autoPosition(mAuto) .setLayout(ViewGroup.LayoutParams.MATCH_PARENT, @@ -354,7 +345,6 @@ public void onClick(String str) .addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view, null)) .setClickedView(mButton12) .setPosition(mPosition) - .calBar(true) .softShowUp() .autoPosition(mAuto) .setThroughEvent(mCheckBoxThrough.isChecked(), true); @@ -398,8 +388,7 @@ public void onClick(View v) .setClickedView(mButton3) .setPosition(mPosition) .autoPosition(mAuto) - .setThroughEvent(mCheckBoxThrough.isChecked(), true) - .calBar(true); + .setThroughEvent(mCheckBoxThrough.isChecked(), true); mCurrentDialog.show(); } } diff --git a/app/src/main/res/layout/activity_test_dialog.xml b/app/src/main/res/layout/activity_test_dialog.xml index c57fbce..c4097d8 100644 --- a/app/src/main/res/layout/activity_test_dialog.xml +++ b/app/src/main/res/layout/activity_test_dialog.xml @@ -158,7 +158,7 @@ android:layout_marginStart="16dp" android:layout_marginTop="8dp" android:textAllCaps="false" - android:text="@string/have_status_but_no_cal_status_height" + android:text="Button" app:layout_constraintBottom_toBottomOf="@+id/button7" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button5" /> diff --git a/build.gradle b/build.gradle index a2cae8e..9092d32 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ ext { siteUrl = 'https://github.com/xujiaji/HappyBubble' gitUrl = 'https://github.com/xujiaji/HappyBubble.git' - libraryVersion = '1.1.6' + libraryVersion = '1.1.7' developerId = 'xujiaji' developerName = 'xujiaji' diff --git a/happy-bubble/build.gradle b/happy-bubble/build.gradle index 1eb9e48..b239d5a 100644 --- a/happy-bubble/build.gradle +++ b/happy-bubble/build.gradle @@ -6,8 +6,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 26 - versionCode 3 - versionName "1.1.6" + versionCode 4 + versionName "1.1.7" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/happy-bubble/src/main/java/com/xujiaji/happybubble/BubbleDialog.java b/happy-bubble/src/main/java/com/xujiaji/happybubble/BubbleDialog.java index f36452d..dad8513 100644 --- a/happy-bubble/src/main/java/com/xujiaji/happybubble/BubbleDialog.java +++ b/happy-bubble/src/main/java/com/xujiaji/happybubble/BubbleDialog.java @@ -5,7 +5,6 @@ import android.content.Context; import android.os.Build; import android.os.Bundle; -import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; @@ -52,7 +51,6 @@ public enum Position private int mWidth, mHeight, mMargin; private View mAddView;//需要添加的view private View mClickedView;//点击的View - private boolean mCalBar;//计算中是否包含状态栏 private int mOffsetX, mOffsetY;//x和y方向的偏移 private int mRelativeOffset;//相对与被点击view的偏移 private boolean mSoftShowUp;//当软件盘弹出时Dialog上移 @@ -87,7 +85,7 @@ public boolean onTouch(View v, MotionEvent event) x = x + v.getWidth() > screenW ? screenW - v.getWidth() : x; x += event.getX(); - float y = params.y + event.getY() + (mCalBar ? statusBar : 0); + float y = params.y + event.getY(); // LogUtil.e2(String.format("(%s, %s) > (%s, %s)", event.getX(), event.getY(), x, y)); event.setLocation(x, y); @@ -199,7 +197,7 @@ private void onAutoPosition() spaces[0] = clickedViewLocation[0];//左距离 spaces[1] = clickedViewLocation[1];//上距离 spaces[2] = Util.getScreenWH(getContext())[0] - clickedViewLocation[0] - mClickedView.getWidth();//右距离 - spaces[3] = Util.getScreenWH(getContext())[1] - clickedViewLocation[1] - mClickedView.getHeight() - (mCalBar ? Util.getStatusHeight(getContext()) : 0);//下距离 + spaces[3] = Util.getScreenWH(getContext())[1] - clickedViewLocation[1] - mClickedView.getHeight();//下距离 if (havePositions()) { // 设置了优先级的情况 mAddView.measure(0, 0); @@ -374,29 +372,29 @@ private void dialogPosition() if (mPosition == Position.BOTTOM) { if (mRelativeOffset != 0) mOffsetY = mRelativeOffset; - params.y = clickedViewLocation[1] - (mCalBar ? Util.getStatusHeight(getContext()) : 0) + mClickedView.getHeight() + mOffsetY; + params.y = clickedViewLocation[1] + mClickedView.getHeight() + mOffsetY; } else { if (mRelativeOffset != 0) mOffsetY = -mRelativeOffset; - params.y = clickedViewLocation[1] - (mCalBar ? Util.getStatusHeight(getContext()) : 0) - mBubbleLayout.getHeight() + mOffsetY; + params.y = clickedViewLocation[1] - mBubbleLayout.getHeight() + mOffsetY; } break; case LEFT: case RIGHT: - params.y = clickedViewLocation[1] - (mCalBar ? Util.getStatusHeight(getContext()) : 0) + mOffsetY + mClickedView.getHeight() / 2 - mBubbleLayout.getHeight() / 2; + params.y = clickedViewLocation[1] + mOffsetY + mClickedView.getHeight() / 2 - mBubbleLayout.getHeight() / 2; if (mMargin != 0 && mHeight == MATCH_PARENT) { - mBubbleLayout.setLookPosition(clickedViewLocation[1] - mMargin + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth() / 2 - (mCalBar ? Util.getStatusHeight(getContext()) : 0)); + mBubbleLayout.setLookPosition(clickedViewLocation[1] - mMargin + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth() / 2); } else if (params.y <= 0) { - mBubbleLayout.setLookPosition(clickedViewLocation[1] + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth() / 2 - (mCalBar ? Util.getStatusHeight(getContext()) : 0)); + mBubbleLayout.setLookPosition(clickedViewLocation[1] + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth() / 2 ); } else if (params.y + mBubbleLayout.getHeight() > Util.getScreenWH(getContext())[1]) { mBubbleLayout.setLookPosition(clickedViewLocation[1] - (Util.getScreenWH(getContext())[1] - mBubbleLayout.getHeight()) + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth() / 2); } else { - mBubbleLayout.setLookPosition(clickedViewLocation[1] - params.y + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth()/ 2 - (mCalBar ? Util.getStatusHeight(getContext()) : 0)); + mBubbleLayout.setLookPosition(clickedViewLocation[1] - params.y + mClickedView.getHeight() / 2 - mBubbleLayout.getLookWidth()/ 2); } if (mPosition == Position.RIGHT) { @@ -473,18 +471,6 @@ public T setClickedView(View view) this.mClickedView = view; mClickedView.getLocationOnScreen(clickedViewLocation); - int[] contentLocation = new int[2]; - View contentView = view.getRootView(); - if (contentView != null) { - contentView = contentView.findViewById(android.R.id.content); - } - if (contentView != null) { - contentView.getLocationOnScreen(contentLocation); - } else { - Log.e("BubbleDialog", "HappyBubble may have an offset. Please adjust the offset by manual call setOffsetX() or setOffsetY() method."); - } - clickedViewLocation[0] -= contentLocation[0]; - clickedViewLocation[1] -= contentLocation[1]; if (mOnGlobalLayoutListener != null) { onAutoPosition(); diff --git a/happy-bubble/src/main/res/values/styles.xml b/happy-bubble/src/main/res/values/styles.xml index 56991f1..1d6bc33 100644 --- a/happy-bubble/src/main/res/values/styles.xml +++ b/happy-bubble/src/main/res/values/styles.xml @@ -1,7 +1,7 @@