资讯专栏INFORMATION COLUMN

Android-LayoutParams的那些事

SwordFly / 301人阅读

摘要:原文是什么是用来告诉它的父控件如何放置自己的,是类里的一个静态内部类。仅仅描述了这个想要的宽度和高度。可以理解成是子告诉父自身宽高的桥梁。

原文:http://tryenough.com/android-... LayoutParams是什么?
LayoutParams是View用来告诉它的父控件如何放置自己的,LayoutParams是ViewGroup类里的一个静态内部类。

ViewGroup.LayoutParams仅仅描述了这个View想要的宽度和高度。可以理解成LayoutParams是子View告诉父View自身宽高的桥梁。

可取的值:

fill_parent

强制性使子视图的大小扩展至与父视图大小相等(不含 padding )

match_parent

与fill_parent相同,用于Android 2.3 & 之后版本

wrap_content

自适应大小,强制性地使视图扩展以便显示其全部内容(含 padding )

不同ViewGroup的继承类对应着不同的ViewGroup.LayoutParams的子类,例如:ViewGroup.MarginLayoutParams, WindowManager.LayoutParams等。

原文:http://tryenough.com/android-... 实际使用的一个例子

Activity:

public class MoveActivity extends AppCompatActivity {
    private ImageView mIv;
    private TextView mTvBlue;
    private TextView mTvGreen;
    private ViewGroup.LayoutParams mVgLp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_move);
        mIv = (ImageView) findViewById(R.id.mIv);
        mTvBlue = (TextView) findViewById(R.id.mTvBlue);
        mTvGreen = (TextView) findViewById(R.id.mTvGreen);

        mVgLp = mIv.getLayoutParams();

        findViewById(R.id.mTvMoveRight).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ViewGroup.LayoutParams vg_lp = mIv.getLayoutParams();
                // RelativeLayout.LayoutParams 不可抽取为成员变量
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(vg_lp);
                params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, R.id.mIv);
                mIv.setLayoutParams(params); //使layout更新
            }
        });

        findViewById(R.id.mTvMoveLeft).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 左 (默认处于顶部,所以看起来是左上)
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);
                params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
                mIv.setLayoutParams(params);
            }
        });

        findViewById(R.id.mTvCenter).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 居中
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);
                params.addRule(RelativeLayout.CENTER_IN_PARENT);
                mIv.setLayoutParams(params);
            }
        });

        findViewById(R.id.mTvLeftVer).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 左部垂直居中
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);
                params.addRule(RelativeLayout.ALIGN_PARENT_LEFT|RelativeLayout.CENTER_VERTICAL);
                mIv.setLayoutParams(params);
            }
        });

        findViewById(R.id.mTvRightBot).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 右下
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);
                params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
                mIv.setLayoutParams(params);
            }
        });
        //  绿在蓝右边
        findViewById(R.id.mTvaGRightB).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ViewGroup.LayoutParams vgLp = mTvGreen.getLayoutParams();
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(vgLp);
                params.addRule(RelativeLayout.RIGHT_OF,R.id.mTvBlue);
                mTvGreen.setLayoutParams(params);
            }
        });

        // 绿在蓝下边
        findViewById(R.id.mTvGElowB).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ViewGroup.LayoutParams vgLp = mTvGreen.getLayoutParams();
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(vgLp);
                params.addRule(RelativeLayout.BELOW,R.id.mTvBlue);
                mTvGreen.setLayoutParams(params);
            }
        });
    }
}

布局xml:



    
        
        
        
    
    
        
        
    
    
        
        
    
    
        
        
        
        
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/14798.html

相关文章

  • JS异步那些 三 (Promise)

    摘要:异常处理异常处理一直是回调的难题,而提供了非常方便的方法在一次调用中,任何的环节发生,都可以在最终的中捕获到错误处理基本的小结具体的很多的用法可以参考阮一峰的入门教程,还有就是上面提到的电子书。 JS异步那些事 一 (基础知识)JS异步那些事 二 (分布式事件)JS异步那些事 三 (Promise)JS异步那些事 四(HTML 5 Web Workers)JS异步那些事 五 (异步脚本...

    wenzi 评论0 收藏0
  • JS异步那些 四(HTML 5 Web Workers)

    摘要:向添加一个事件监听器当传递消息时,会执行事件监听器中的代码。终止当我们创建对象后,它会继续监听消息即使在外部脚本完成之后直到其被终止为止。 JS异步那些事 一 (基础知识)JS异步那些事 二 (分布式事件)JS异步那些事 三 (Promise)JS异步那些事 四(HTML 5 Web Workers)JS异步那些事 五 (异步脚本加载) 什么是 Web Worker? 当在 HTML ...

    ZoomQuiet 评论0 收藏0
  • JS异步那些 四(HTML 5 Web Workers)

    摘要:向添加一个事件监听器当传递消息时,会执行事件监听器中的代码。终止当我们创建对象后,它会继续监听消息即使在外部脚本完成之后直到其被终止为止。 JS异步那些事 一 (基础知识)JS异步那些事 二 (分布式事件)JS异步那些事 三 (Promise)JS异步那些事 四(HTML 5 Web Workers)JS异步那些事 五 (异步脚本加载) 什么是 Web Worker? 当在 HTML ...

    maybe_009 评论0 收藏0
  • JS异步那些 一 (基础知识)

    摘要:异步那些事一基础知识异步那些事二分布式事件异步那些事三异步那些事四异步那些事五异步脚本加载事件概念异步回调首先了讲讲中两个方法和定义和用法方法用于在指定的毫秒数后调用函数或计算表达式。功能在事件循环的下一次循环中调用回调函数。 JS异步那些事 一 (基础知识)JS异步那些事 二 (分布式事件)JS异步那些事 三 (Promise)JS异步那些事 四(HTML 5 Web Workers...

    李涛 评论0 收藏0
  • JS异步那些 五 (异步脚本加载)

    摘要:遵循的是异步模块定义规范,遵循的是通用模块定义规范。不同的脚本加载这个模块,得到的都是同一个实例。关于异步那些事就写到这里了,很多地方理解的不够深刻希望大家多多指教。 JS异步那些事 一 (基础知识)JS异步那些事 二 (分布式事件)JS异步那些事 三 (Promise)JS异步那些事 四(HTML 5 Web Workers)JS异步那些事 五 (异步脚本加载) 异步脚本加载 阻塞性...

    terasum 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<