动态设置 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);
时间: 2024-08-10 21:21:47

动态设置 view 在布局中位置的相关文章

Android动态设置View的位置和大小

以LinearLayout中的控件ImageView为例 LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.linearlayout); ImageView imageView = new ImageView(this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100); params.setMargins(5,

Odoo 动态设置树形视图列表中的字段

依赖第三方模块实现,实现效果图如下: 原模块只有9.0版本 ,今改成了8.0版本. git地址见群内公告.

关于android 动态设置view 样式 问题(默认style)

解决方案一: Button btn=new Button(new ContextThemeWrapper(mContext,R.style.service_text_dialog_style),null,R.style.service_text_dialog_style); 解决方案二(待验证): <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://

动态设置RecyclerView的高度

View view = LayoutInflater.from(mContext).inflate(R.layout.help_recycler, parent, false); //动态设置View高度,解决'查看更多'上下偏移问题 final float scale = mContext.getResources().getDisplayMetrics().density; int imageHeiht = (int) (102 * scale + 0.5f);//dp转px if(view

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

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) imageButtonCursor.getLayoutParams(); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, R.id.imageButtonCursor); 设置imageButtonCursor在底部(因为之前此控件是依附A控件来设定位置的,根据需求A控件要隐藏掉,当A控

在代码中动态设置android里View的边距

有时候需要动态设置某个View的位置,如果在布局文件中写则其布局已定. 这时可以通过在代码中根据不同的需要增加判断后,在设定边距等. 如下. 需要说下,setMargins() 方法.其括号中的四个参数依次对应的方位为-- 左,上,右,下. 左即指View的左边距. 代码来自mtk android 源码. 在代码中动态设置android里View的边距

Android在布局中动态添加view的两种方法

一.说明 添加视图文件的时候有两种方式:1.通过在xml文件定义layout:2.java代码编写 二.前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类.这个类最主要的功能就是实现将xml表述的layout转化为View的功能.为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象,不同的是findViewById()是找xml布局文件下的具体widget控件实例化,而LayoutI

android 用java动态设置布局(增添删除修改布局)

XML对开发者来说十分的方便,不仅使用起来简单,而且能够及时调试,修改界面之后马上能看到效果. Java设置布局不具有这个优势.但是java却可以动态对布局进行操作,这是xml所做不到的.笔者认为,新手索要掌握的java动态设置布局主要有两点,一方面是对布局的属性进行修改,另一方面是增添和删除控件. 首先说一下动态设置布局在项目中的应用,拿高德地图举个例子,如下图:    我们可以看到,高德地图的默认界面与点击地图之后的界面是不一样的,上面同样的控件在layout中的位置也不一样,这个用xml便

动态设置布局LayoutInflater

LayoutInflater作用是将layout的xml布局文件实例化为View类对象,LayoutInflater 的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等). 获得 LayoutInflater 实例的三种方式. 1.LayoutInflater inflater = getLay