Android自定义控件布局刷新自定义控件回到初始位置问题的解决

本文探讨了在Android开发中遇到的自定义控件在布局刷新后返回初始位置的问题。通过分析Android源码,发现在RelativeLayout和LinearLayout中,view子控件的LayoutParams实际上是MarginLayoutParams。为了解决布局改变后自定义控件位置重置的问题,可以利用这个特性直接设置控件参数,避免其回到起始位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在阐述我所遇到的问题之前,先通过查看Android源码发现这样几个代码样例:

1. 

grep extends\ ViewGroup.MarginLayoutParams  ./core/java/android/widget/ -rn
./core/java/android/widget/RelativeLayout.java:1030:    public static class LayoutParams extends ViewGroup.MarginLayoutParams {
./core/java/android/widget/LinearLayout.java:1739:    public static class LayoutParams extends ViewGroup.MarginLayoutParams {
  

2.

grep class\ MarginLayoutParams  core/java/android/view/ViewGroup.java -rn  
5376:    public static class MarginLayoutParams extends ViewGroup.LayoutParams {

3.在measureChildWithMargins()方法中发现child.getLayoutParams()得到的LayoutParams可以直接转换成MarginLayoutParams。

protected void measureChildWithMargins(View child,
            int parentWidthMeasureSpec, int widthUsed,
            int parentHeight
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值