android在布局中动态增加view时的层级控制
来源:互联网 发布:阿里巴巴比淘宝便宜 编辑:程序博客网 时间:2024/06/09 22:38
问题:我们有时候希望动态的在android的布局中增加view,例如动态增加一个textview来显示数据为空,但是当布局较为复杂时,你希望把view加载特定的其他view的后面,这是要如何处理呢?
答案:
先看一个布局片段
- <RelativeLayout
- android:id="@+id/baobei_gridview"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center_horizontal" >
- <GridView
- android:id="@+id/products"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="top|left"
- android:horizontalSpacing="6.53dp"
- android:listSelector="#00ffffff"
- android:numColumns="2"
- android:padding="6dp"
- android:scrollbars="none"
- android:scrollingCache="true"
- android:stretchMode="columnWidth"
- android:verticalSpacing="11.76dp"
- android:visibility="visible">
- </GridView>
- <LinearLayout
- android:id="@+id/catalogContainer"
- android:layout_width="173dp"
- android:layout_height="177dp"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:background="@drawable/oms_catalog_bg"
- android:padding="3dp"
- android:visibility="gone" >
- <ListView
- android:id="@+id/catalogs"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scrollbars="@null">
- </ListView>
- </LinearLayout>
- </RelativeLayout>
该布局由relativelayout,girdview,linearlayout组成。relativelayou是其余2个布局的父容器。
接下来看下动态增加view的代码
- if (emptyView == null) {
- emptyView = new TextView(context);
- emptyView.setText("没有搜索到结果");
- LayoutParams emptyParam = new RelativeLayout.LayoutParams(
- LayoutParams.WRAP_CONTENT,
- LayoutParams.WRAP_CONTENT);
- ((android.widget.RelativeLayout.LayoutParams) emptyParam)
- .addRule(RelativeLayout.CENTER_IN_PARENT);
- ((ViewGroup) baobeis.getParent()).addView(emptyView, 1,
- emptyParam);
- baobeis.setEmptyView(emptyView);
- }
该代码中的baobeis.getParent()指的就是relativelayout,当addview进去的时候,我们使用addView的一个构造方法
public void addView (View child, int index, ViewGroup.LayoutParams params)
这里最主要的参数就是index,标示的是希望将view增加到哪个view的下面。从刚才的布局代码片段看,以父布局relativelayout算起,
即
RelativeLayou index=0;
GridView index=1;
LinearLayout index=2;
你如果给index填写大于2的值将会报错。因为在当前父容器下,没有大于3的同级view
当然你还可以填写index=-1,-1的意思是,将view加到父容器中所有容器的最下面,也就是linearlayout的下面
如果你不能理解,那么你可以想下,这个css中,z-index有点象的。
阅读全文
0 0
- android在布局中动态增加view时的层级控制
- android在布局中动态增加view时的层级控制
- Layout inflation在Android环境中是一个专业术语,用于表示某个XML资源布局文件被解析并转化成为一个层级的View对象的过程。
- Android 在程序中动态添加 View 布局或控件
- Android 在自定义view中动态设置布局规则
- Android在布局中动态添加view的两种方法
- android 自定义VIew 动态在页面中改变页面的布局
- Android初学习 - 在布局中动态添加view的两种方法
- Android在布局中动态添加view的两种方法
- Android在布局中动态添加view的两种方法
- android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局
- android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局
- android View的层级结构
- android 使用windowManager添加两个view的时候,如何控制view的层级关系
- Android的View的布局控制
- android在代码中修改view的布局
- Android动态布局控制
- android客户端学习-RelativeLayout布局动态在四个角的位置增加标签
- Redis基本类型和底层实现
- 基础练习 数的读法
- 线程池ThreadPoolExecutor与java.util.concurrent.RejectedExecutionException异常
- 代码重构之重新组织函数
- bzoj3252攻略 贪心+dfs序+线段树
- android在布局中动态增加view时的层级控制
- Desert King POJ
- 双列集合(Map)
- 2014-03-03-ue快速编译运行及激活
- React常见问题梳理
- 【OpenCV入门教程之八】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波
- 罗尔(Rolle)、拉格朗日(Lagrange)和柯西(Cauchy)三大微分中值定理的定义
- 分享链小程序开发源码分析
- java语言类型