Skip to content

Commit

Permalink
修复子控件点击事件区域不正确的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
getActivity committed Jun 3, 2023
1 parent 0b4b3a5 commit 32bf9d8
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 30 deletions.
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

* 博客地址:[Android标题栏(TitleBar)绝佳解决方案](https://www.jianshu.com/p/617be02dc265)

* 可以扫码下载 Demo 进行演示或者测试,如果扫码下载不了的,[点击此处可直接下载](https://github.com/getActivity/TitleBar/releases/download/10.3/TitleBar.apk)
* 可以扫码下载 Demo 进行演示或者测试,如果扫码下载不了的,[点击此处可直接下载](https://github.com/getActivity/TitleBar/releases/download/10.5/TitleBar.apk)

![](picture/demo_code.png)

Expand Down Expand Up @@ -49,7 +49,7 @@ android {
dependencies {
// 标题栏框架:https://github.com/getActivity/TitleBar
implementation 'com.github.getActivity:TitleBar:10.3'
implementation 'com.github.getActivity:TitleBar:10.5'
}
```

Expand Down Expand Up @@ -260,7 +260,7 @@ public class XxxApplication extends Application {

* 网络框架:[EasyHttp](https://github.com/getActivity/EasyHttp) ![](https://img.shields.io/github/stars/getActivity/EasyHttp.svg) ![](https://img.shields.io/github/forks/getActivity/EasyHttp.svg)

* 悬浮窗框架:[XToast](https://github.com/getActivity/XToast) ![](https://img.shields.io/github/stars/getActivity/XToast.svg) ![](https://img.shields.io/github/forks/getActivity/XToast.svg)
* 悬浮窗框架:[EasyWindow](https://github.com/getActivity/EasyWindow) ![](https://img.shields.io/github/stars/getActivity/EasyWindow.svg) ![](https://img.shields.io/github/forks/getActivity/EasyWindow.svg)

* Shape 框架:[ShapeView](https://github.com/getActivity/ShapeView) ![](https://img.shields.io/github/stars/getActivity/ShapeView.svg) ![](https://img.shields.io/github/forks/getActivity/ShapeView.svg)

Expand Down Expand Up @@ -294,11 +294,21 @@ public class XxxApplication extends Application {

#### Android 技术 Q 群:10047167

#### 如果您觉得我的开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 :monkey_face:就太:thumbsup:了。您的支持将鼓励我继续创作:octocat:
#### 如果您觉得我的开源库帮你节省了大量的开发时间,请扫描下方的二维码随意打赏,要是能打赏个 10.24 :monkey_face:就太:thumbsup:了。您的支持将鼓励我继续创作:octocat:[点击查看捐赠列表](https://github.com/getActivity/Donate)

![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_ali.png) ![](https://raw.githubusercontent.com/getActivity/Donate/master/picture/pay_wechat.png)

#### [点击查看捐赠列表](https://github.com/getActivity/Donate)
#### 广告区

* 我现在任腾讯云服务器推广大使,大家如果有购买服务器的需求,可以通过下面的链接购买

[![](https://upload-dianshi-1255598498.file.myqcloud.com/upload/nodir/345X200-9ae456f58874df499adf7c331c02cb0fed12b81d.jpg)](https://curl.qcloud.com/A6cYskvv)

[【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中](https://curl.qcloud.com/A6cYskvv)

[![](https://upload-dianshi-1255598498.file.myqcloud.com/345-200-b28f7dee9552f4241ea6a543f15a9798049701d4.jpg)](https://curl.qcloud.com/up4fQsdn)

[【腾讯云】中小企业福利专场,多款刚需产品,满足企业通用场景需求](https://curl.qcloud.com/up4fQsdn)

## License

Expand Down
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ android {
applicationId "com.hjq.bar.demo"
minSdkVersion 17
targetSdkVersion 31
versionCode 1030
versionName "10.3"
versionCode 1050
versionName "10.5"
}

// 支持 JDK 1.8
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/java/com/hjq/bar/demo/MainActivity.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.hjq.bar.demo;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;

import androidx.appcompat.app.AppCompatActivity;

Expand Down
1 change: 0 additions & 1 deletion app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@
app:layout_collapseMode="pin" />

<TextView
android:id="@+id/tv_about_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
Expand Down
4 changes: 2 additions & 2 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ android {

defaultConfig {
minSdkVersion 16
versionCode 1030
versionName "10.3"
versionCode 1050
versionName "10.5"
}

// 支持 JDK 1.8
Expand Down
34 changes: 16 additions & 18 deletions library/src/main/java/com/hjq/bar/TitleBar.java
Original file line number Diff line number Diff line change
Expand Up @@ -323,36 +323,34 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int rightViewMeasuredWidth = mRightView.getMeasuredWidth();
int rightViewMeasuredHeight = mRightView.getMeasuredHeight();

if (!TitleBarSupport.containContent(mTitleView)) {
if (!TitleBarSupport.containContent(mRightView)) {
measureTitleBar(titleBarWidth, 0, 0, heightMeasureSpec);
return;
}

if (rightViewMeasuredWidth <= titleBarWidth / 3) {
measureTitleBar(titleBarWidth - rightViewMeasuredWidth, 0, rightViewMeasuredWidth, heightMeasureSpec);
return;
}

measureTitleBar(titleBarWidth / 4 * 3, titleBarWidth / 4, rightViewMeasuredWidth, heightMeasureSpec);
return;
}

int maxEdgeWidth = Math.max(leftViewMeasuredWidth, rightViewMeasuredWidth);
int calculateTotalWidth = maxEdgeWidth * 2 + titleViewMeasuredWidth;
// 算出来总宽度是否大于标题栏的宽度
// 算出来总宽度是否小于标题栏的宽度
if (calculateTotalWidth <= titleBarWidth) {
measureTitleBar((TitleBarSupport.containContent(mLeftView) ? leftViewMeasuredWidth : 0), titleViewMeasuredWidth,
(TitleBarSupport.containContent(mRightView) ? rightViewMeasuredWidth : 0), heightMeasureSpec);
return;
}

int leftViewWidth;
int titleViewWidth;
int rightViewWidth;

// 判断是左右项太长还是标题项太长
if (maxEdgeWidth > titleBarWidth / 3) {
// 如果是左右项太长,那么就进行动态计算
measureTitleBar(titleBarWidth / 4, titleBarWidth / 2, titleBarWidth / 4, heightMeasureSpec);
leftViewWidth = titleBarWidth / 4;
titleViewWidth = titleBarWidth / 2;
rightViewWidth = titleBarWidth / 4;
} else {
// 如果是标题项太长,那么就进行动态计算
measureTitleBar(maxEdgeWidth, titleBarWidth - maxEdgeWidth * 2, maxEdgeWidth, heightMeasureSpec);
leftViewWidth = maxEdgeWidth;
titleViewWidth = titleBarWidth - maxEdgeWidth * 2;
rightViewWidth = maxEdgeWidth;
}

measureTitleBar((TitleBarSupport.containContent(mLeftView) ? leftViewWidth : 0), titleViewWidth,
(TitleBarSupport.containContent(mRightView) ? rightViewWidth : 0), heightMeasureSpec);
}

private void measureTitleBar(int leftViewWidth, int titleViewWidth, int rightViewWidth, int titleBarHeightMeasureSpec) {
Expand Down

0 comments on commit 32bf9d8

Please sign in to comment.