动态设置 view 在布局中位置

Posted 小小博客园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态设置 view 在布局中位置相关的知识,希望对你有一定的参考价值。

一.概述

有时项目需要动态设置一个 底部列表,比如 popupwindow ,listview 底部显示 ,所以记录一下

此处,

android.support.v7.widget.CardView 中包含了一个listview,而我要实现的是, 点击mLayout这个布局上面的 6个按钮, 在底部弹出不同的listview.  项目中
mLayout是一个 LinearLayout

二.代码如下

  View view = View.inflate(getActivity(),R.layout.template_listview,null);
        cardView = (CardView) view.findViewById(R.id.cardView);
        cardView.setVisibility(View.GONE);
        listView = (ListView) view.findViewById(R.id.listView);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.BOTTOM;
        cardView.setLayoutParams(params);
        mLayout.addView(cardView);

发现 

params.gravity = Gravity.BOTTOM; 根本就不起作用,原来 主布局 mlayout 我定义成了 垂直的,定义成 水平布局就好了.

当 android:orientation="vertical"  时, 只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。

当 android:orientation="horizontal" 时, 只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。

 

如果mLayout 是一个 相对布局,而我们想把这个 cardView 控件显示到 相对布局底部,可以这么写

 View view = View.inflate(getActivity(),R.layout.template_listview,null);
        cardView = (CardView) view.findViewById(R.id.cardView);
        cardView.setVisibility(View.GONE);
        listView = (ListView) view.findViewById(R.id.listView);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
        cardView.setLayoutParams(params);
        mLayout.addView(cardView);

 

以上是关于动态设置 view 在布局中位置的主要内容,如果未能解决你的问题,请参考以下文章

Tablayout+view 寻呼机未在位置 0 显示片段

Android片段布局完成膨胀

android view怎么设置位置

android RelativeLayout代码中动态设置相对布局里控件的位置

如何在Relativelayout中动态设置控件位置

如何在Relativelayout中动态设置控件位置