diff --git a/README.md b/README.md index 2e48308..b8a9f74 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ Note:图1为设置属性wkp_canScrollToEndViewTop=true,图2没有;图3为 ## Gradle集成 ```groovy dependencies{ - compile 'com.wkp:StickLayout:1.0.6' + compile 'com.wkp:StickLayout:1.0.7' //Android Studio3.0+可用以下方式 - //implementation 'com.wkp:StickLayout:1.0.6' + //implementation 'com.wkp:StickLayout:1.0.7' } //如不愿意等待,请加上我的maven仓库地址 @@ -229,6 +229,8 @@ QQ邮箱:1535514884@qq.com
Gmail邮箱:wkp15889686524@gmail.com
## 版本更新 +* v1.0.7
+修复crash:当所有子控件均未设置wkp_stick属性时,使用pair导致空指针。

* v1.0.6
修复悬停控件高度设置wrap_content时无高度BUG。

* v1.0.5
diff --git a/app/src/main/java/com/wkp/sticklayout/MainActivity.java b/app/src/main/java/com/wkp/sticklayout/MainActivity.java index f219084..b6512c2 100644 --- a/app/src/main/java/com/wkp/sticklayout/MainActivity.java +++ b/app/src/main/java/com/wkp/sticklayout/MainActivity.java @@ -5,7 +5,6 @@ import android.view.View; import android.widget.ArrayAdapter; import android.widget.TextView; -import android.widget.Toast; import com.wkp.sticklayout_lib.widget.StickLayout; @@ -51,7 +50,7 @@ protected void onCreate(Bundle savedInstanceState) { public void onScrollChange(StickLayout v, View currentView, int position, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { //直到当前控件改变在做事情 if (currentPosition != position && position <= 7) { - Toast.makeText(v.getContext(), ((TextView) currentView).getText().toString(), Toast.LENGTH_SHORT).show(); +// Toast.makeText(v.getContext(), ((TextView) currentView).getText().toString(), Toast.LENGTH_SHORT).show(); currentPosition = position; } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7219c9c..7032802 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -29,8 +29,8 @@ android:layout_width="match_parent" android:layout_height="200dp"/> + diff --git a/gradle.properties b/gradle.properties index aac7c9b..fd06783 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,3 +15,4 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.enableAapt2=false \ No newline at end of file diff --git a/sticklayout-lib/build.gradle b/sticklayout-lib/build.gradle index 3d0cd35..ad4c934 100644 --- a/sticklayout-lib/build.gradle +++ b/sticklayout-lib/build.gradle @@ -11,8 +11,8 @@ android { // applicationId "com.wkp.sticklayout_lib" minSdkVersion 15 targetSdkVersion 26 - versionCode 6 - versionName "1.0.6" + versionCode 7 + versionName "1.0.7" } @@ -34,7 +34,7 @@ publish { userOrg = 'wkp' groupId = 'com.wkp' artifactId = 'StickLayout' - publishVersion = '1.0.6' + publishVersion = '1.0.7' desc = 'a library to create a stickable layout' website = 'https://github.com/wkp111/StickLayout' } diff --git a/sticklayout-lib/src/main/java/com/wkp/sticklayout_lib/widget/StickLayout.java b/sticklayout-lib/src/main/java/com/wkp/sticklayout_lib/widget/StickLayout.java index 4c95c4c..3f760c2 100644 --- a/sticklayout-lib/src/main/java/com/wkp/sticklayout_lib/widget/StickLayout.java +++ b/sticklayout-lib/src/main/java/com/wkp/sticklayout_lib/widget/StickLayout.java @@ -720,13 +720,16 @@ protected void onScrollChanged(int l, int t, int oldl, int oldt) { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); - //确定替代控件的大小 - View replaceView = mViewPair.first; - View originalView = mViewPair.second; - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) replaceView.getLayoutParams(); - params.width = originalView.getMeasuredWidth(); - params.height = originalView.getMeasuredHeight(); - replaceView.setLayoutParams(params); + //当存在停留子控件时,需要设置替代控件的大小 + if (mViewPair != null) { + //确定替代控件的大小 + View replaceView = mViewPair.first; + View originalView = mViewPair.second; + LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) replaceView.getLayoutParams(); + params.width = originalView.getMeasuredWidth(); + params.height = originalView.getMeasuredHeight(); + replaceView.setLayoutParams(params); + } if (!mFillViewport) { return;