动态设置 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 在布局中位置的主要内容,如果未能解决你的问题,请参考以下文章