LayoutParams设置无效可能的原因

控件是不是还设置了权重比例android:layout_weight属性。

weight属性的优先级要高于LayoutParams设定的值。简单来说就是你不能“又要让马儿跑,又不让马儿吃草”,既然定死了所占比例,当然就无法同时设置其它的尺寸了。

解决办法也简单:

①(去TM的权重(╯‵□′)╯︵┻━┻):将weight属性删去,自己在java代码中重新设计尺寸

②(不不不,还是权重要紧_(:з」∠)_):在控件外层套一层Layout,在该Layout上设置权重。同时JAVA代码对控件尺寸再调整。


二是不是控件带入了过大/小尺寸的图片。

这种情况下控件受制于图片的尺寸使得整体过大,无法做到所要求的尺寸。需要对图片ImageView额外设置imageView.setScaleXY(适配方案);

setScaleXY方法有多种尺寸方案可选(属性位于ImageView.ScaleType类中),摘选如下:

Enum values

ScaleType CENTER

Center the image in the view, but perform no scaling. 

中心的图像在视图中,但是没有执行缩放。

ScaleType CENTER_CROP

Scale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or larger than the corresponding dimension of the view (minus padding). 

将图像均匀地缩放(保持图像的宽比),这样图像的大小(宽度和高度)将等于或大于视图的相应维度(减去填充)。

ScaleType CENTER_INSIDE

Scale the image uniformly (maintain the image's aspect ratio) so that both dimensions (width and height) of the image will be equal to or less than the corresponding dimension of the view (minus padding). 

将图像均匀地缩放(保持图像的宽比),这样图像的大小(宽度和高度)就等于或小于视图的相应维度(减去填充)。

ScaleType FIT_CENTER

Scale the image using CENTER.

使用中心缩放图像。常用属性值,即是说在保持原有图像比例的前提下充满父容器。

ScaleType FIT_END

Scale the image using END.

使用末端缩放图像。

ScaleType FIT_START

Scale the image using START.

使用前端缩放图像。

ScaleType FIT_XY

Scale the image using FILL.

使用填充来缩放图像。常用属性,不管图片原比例,按父容器比例拉伸图片。

ScaleType MATRIX

Scale using the image matrix when drawing. 

绘图时使用图像矩阵的尺度。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要修改 AOSP 中的 `WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS` 失效问题,并在 `navigationBarView` 中设置图片,可以按照以下步骤进行: 1. 打开 `frameworks/base/core/res/res/values/styles.xml` 文件,找到 `Theme.Material.Light` 主题的定义,复制一份命名为 `Theme.Material.Light.NoTranslucent`。 2. 在新的主题中移除 `android:windowTranslucentStatus` 属性,保留其他属性。 3. 打开 `frameworks/base/core/res/res/values/themes.xml` 文件,找到 `Theme.Material.Light.DarkActionBar` 主题的定义,复制一份命名为 `Theme.Material.Light.DarkActionBar.NoTranslucent`。 4. 在新的主题中移除 `android:windowTranslucentStatus` 属性,保留其他属性。 5. 打开 `frameworks/base/core/java/android/view/WindowManagerGlobal.java` 文件,找到 `applyCompatConfiguration` 方法。 6. 在方法中找到 `params.flags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;` 这行代码,将其修改为 `params.flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;`。 7. 打开 `frameworks/base/core/res/res/layout/navigation_bar.xml` 文件,在其中添加需要设置的图片。 ``` <ImageView android:id="@+id/navigation_bar_icon" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:src="@drawable/navigation_bar_icon" /> ``` 8. 重新编译 AOSP 并刷入设备即可。 注意:以上修改可能会影响到其他应用的行为,需谨慎操作。同时,需要确保设置的图片大小和导航栏大小相同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值