Comments (3)
同问,Android 7.0 遇到 layout_marginLeftPercent 属性失效问题,低于 7.0 正常。
from android-percent-support-extend.
7.0适配的话,修改下源码PercentLayoutHelperl类的方法fillMarginLayoutParams就可以了
public void fillMarginLayoutParams(ViewGroup.MarginLayoutParams params, int widthHint,
int heightHint)
{
fillLayoutParams(params, widthHint, heightHint);
// Preserver the original margins, so we can restore them after the measure step.
mPreservedParams.leftMargin = params.leftMargin;
mPreservedParams.topMargin = params.topMargin;
mPreservedParams.rightMargin = params.rightMargin;
mPreservedParams.bottomMargin = params.bottomMargin;
MarginLayoutParamsCompat.setMarginStart(mPreservedParams,
MarginLayoutParamsCompat.getMarginStart(params));
MarginLayoutParamsCompat.setMarginEnd(mPreservedParams,
MarginLayoutParamsCompat.getMarginEnd(params));
if (leftMarginPercent != null)
{
int base = getBaseByModeAndVal(widthHint, heightHint, leftMarginPercent.basemode);
params.leftMargin = (int) (base * leftMarginPercent.percent);
}
if (topMarginPercent != null)
{
int base = getBaseByModeAndVal(widthHint, heightHint, topMarginPercent.basemode);
params.topMargin = (int) (base * topMarginPercent.percent);
}
if (rightMarginPercent != null)
{
int base = getBaseByModeAndVal(widthHint, heightHint, rightMarginPercent.basemode);
params.rightMargin = (int) (base * rightMarginPercent.percent);
}
if (bottomMarginPercent != null)
{
int base = getBaseByModeAndVal(widthHint, heightHint, bottomMarginPercent.basemode);
params.bottomMargin = (int) (base * bottomMarginPercent.percent);
}
if (startMarginPercent != null)
{
int base = getBaseByModeAndVal(widthHint, heightHint, startMarginPercent.basemode);
MarginLayoutParamsCompat.setMarginStart(params,
(int) (base * startMarginPercent.percent));
}
if (endMarginPercent != null)
{
int base = getBaseByModeAndVal(widthHint, heightHint, endMarginPercent.basemode);
MarginLayoutParamsCompat.setMarginEnd(params,
(int) (base * endMarginPercent.percent));
}
if (Log.isLoggable(TAG, Log.DEBUG))
{
//Log.d(TAG, "after fillMarginLayoutParams: (" + params.width + ", " + params.height
// + ")");
}
//7.0系统修改下mPreservedParams数据
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
mPreservedParams.leftMargin = params.leftMargin;
mPreservedParams.topMargin = params.topMargin;
mPreservedParams.rightMargin = params.rightMargin;
mPreservedParams.bottomMargin = params.bottomMargin;
MarginLayoutParamsCompat.setMarginStart(mPreservedParams,
MarginLayoutParamsCompat.getMarginStart(params));
MarginLayoutParamsCompat.setMarginEnd(mPreservedParams,
MarginLayoutParamsCompat.getMarginEnd(params));
}
}
from android-percent-support-extend.
from android-percent-support-extend.
Related Issues (20)
- 这种情况怎么解决?根本用不了,急! HOT 1
- 代码补全没有我可以用Live Templates, 可是%sw和%sh无法预览这让人很尴尬呀~ 求解决办法!
- PercentLinearLayout使用app:layout_paddingPercent等属性没有效果??
- PercentRelativeLayout里的android:layout_alignBaseline属性失效
- 在list的item布局里高度百分比不显示 HOT 5
- 在ScrollView中无法正常显示?
- compile后编译在模拟器会白屏
- 大神,问一下,这个能用java设置么
- paddingLeftPercent 不生效
- 谷歌的百分比库已废弃,转用约束布局,是不是说以后屏幕适配都可以用约束布局实现了? HOT 4
- Scroll view of edit texts
- 你们用了不会觉得列表很卡吗 HOT 1
- 自定义控件如何修改使用此库
- ConstraintLayout 饥渴难耐 HOT 1
- ConstraintLayout 饥渴难耐 HOT 1
- Caused by: java.util.IllegalFormatConversionException: %f can't format com.zhy.android.percent.support.PercentLayoutHelper$PercentLayoutInfo$PercentVal arguments HOT 2
- 你好不知道这个错误的原因
- error: '100%w' is incompatible with attribute layout_widthPercent (attr) fraction [weak].
- 报错啦!!! HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-percent-support-extend.