在代码中动态调整布局——LayoutParams

在写侧边栏时需要使用动态调整布局,点击按钮出现侧边栏。这里用到了LayoutParams。

LayoutParams其实我们一直在用,在布局文件.xml中,我们经常写android:layout_width="xx";这里带“layout_”的属性其实都是LayoutParams的属性,它告诉父控件自己的长宽位置等。在代码中,我们就需要根据LinearLayout等布局对象来获得该布局的布局参数对象LayoutParams。然后通过设置该布局参数对象的属性值动态控制布局的位置大小等。

使用方法大致如下:

import android.widget.LinearLayout;

import android.widget.LinearLayout.LayoutParams;

 

private LinearLayout menu;

private LayoutParams menuParams;

 

menu = (LinearLayout) findViewById(R.id.menu);

menuParams = (LayoutParams) menu.getLayoutParams();

 

menuParams.leftMargin = 0;

menu.setLayoutParams(menuParams);

这里要注意的是,有时会出现menuParams不包含leftMargin 属性等错误,那是因为LayoutParams不仅是LinearLayout下的一个类,也是很多如GroupView下的子类,有些下面的就不包含leftMargin 属性,当要调整的是整个布局的参数,一定要引入android.widget.LinearLayout.LayoutParams;
 

 

(但其实侧边菜单用这种方法不好,因为是自己写的一点点改变坐标,就会显得很僵硬,一般使用PopupWindow,可以参考:https://blog.csdn.net/jueblog/article/details/12245289

就像Unity中移动物体有平滑移动的函数,jquery有控制面板平滑移动的函数一样,popupWindow是在xml文件中可以设置动画:

android:fromXDelta="0"  
android:toXDelta="-100%"  
android:duration="500"/>  

 

文章参考:

http://www.open-open.com/lib/view/open1373330713831.html  :menuParams.leftMargin = 0 - menuParams.width;一点点改变坐标。不推荐使用这种方法。

https://www.cnblogs.com/ajeyone/p/layoutparams.html :从源码看Layout与Params的关系

你可能感兴趣的:(Android)