Android在布局中动态添加view的两种方法
来源:互联网 发布:淘宝差评被骚扰怎么办 编辑:程序博客网 时间:2024/06/05 01:17
一、说明
三、步骤
1、通过在xml文件定义layout(block_gym_album_list_item.xml)
3、DynamicViewActivity.xml
4、有需要再联系我:qq-508181017
添加视图文件的时候有两种方式:1、通过在xml文件定义layout;2、java代码编写
二、前言说明
1.构造xml文件
2.LayoutInflater
提到addview,首先要了解一下LayoutInflater类。这个类最主要的功能就是实现将xml表述的layout转化为View的功能。为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象,不同的是findViewById()是找xml布局文件下的具体widget控件实例化,而LayoutInflater找res/layout/下的xml布局文件来实例化的。
(1)创建
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);或
LayoutInflater inflater = LayoutInflater.from(Activity.this);或
LayoutInflater inflater = getLayoutInflater();
这三种方法本质是相同的。
(2)inflate()
用LayoutInflater.inflate() 将LayOut文件转化成VIew。
View view = inflater.inflate(R.layout.block_gym_album_list_item, null);
3.添加视图文件
三、步骤
1、通过在xml文件定义layout(block_gym_album_list_item.xml)
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:core="http://schemas.android.com/apk/res/com.gxtag.gym" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="5dp" > <ImageView android:id="@+id/iv_head_album" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/defaulthead" /></LinearLayout>
2、main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ll_parent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <include android:layout_width="fill_parent" android:layout_height="wrap_content" layout="@layout/block_head_back" /></LinearLayout>
3、DynamicViewActivity.xml
package com.gxtag.gym.ui;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;import com.gxtag.gym.R;import com.icq.app.widget.StatedButton;public class DynamicViewActivity extends Activity implements OnClickListener{private Context mContext;private TextView mTv_title;private String title = "动态添加布局";private StatedButton mSbtn_back;private LinearLayout mLl_parent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dynamic);mContext=this;initView();mLl_parent.addView(addView1());mLl_parent.addView(addView2());}private void initView() {// TODO 初始化视图mLl_parent=(LinearLayout) findViewById(R.id.ll_parent);mTv_title = (TextView) findViewById(R.id.tv_title);mTv_title.setText(String.format(String.format(getResources().getString(R.string.title), title)));mSbtn_back = (StatedButton) findViewById(R.id.sbtn_navback);mSbtn_back.setOnClickListener(this);} private View addView1() {// TODO 动态添加布局(xml方式)LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); //LayoutInflater inflater1=(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//LayoutInflater inflater2 = getLayoutInflater();LayoutInflater inflater3 = LayoutInflater.from(mContext);View view = inflater3.inflate(R.layout.block_gym_album_list_item, null);view.setLayoutParams(lp);return view;}private View addView2() {// TODO 动态添加布局(java方式)LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); LinearLayout view = new LinearLayout(this); view.setLayoutParams(lp);//设置布局参数 view.setOrientation(LinearLayout.HORIZONTAL);// 设置子View的Linearlayout// 为垂直方向布局 //定义子View中两个元素的布局 ViewGroup.LayoutParams vlp = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); ViewGroup.LayoutParams vlp2 = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); TextView tv1 = new TextView(this); TextView tv2 = new TextView(this); tv1.setLayoutParams(vlp);//设置TextView的布局 tv2.setLayoutParams(vlp2); tv1.setText("姓名:"); tv2.setText("李四"); tv2.setPadding(calculateDpToPx(50), 0, 0, 0);//设置边距 view.addView(tv1);//将TextView 添加到子View 中 view.addView(tv2);//将TextView 添加到子View 中 return view; }private int calculateDpToPx(int padding_in_dp){ final float scale = getResources().getDisplayMetrics().density; return (int) (padding_in_dp * scale + 0.5f); } @Overridepublic void onClick(View v) {// TODO 控件单击事件switch (v.getId()) {case R.id.sbtn_navback:this.finish();break;default:break;}}}
4、有需要再联系我:qq-508181017
0 0
- Android在布局中动态添加view的两种方法
- Android初学习 - 在布局中动态添加view的两种方法
- Android在布局中动态添加view的两种方法
- Android在布局中动态添加view的两种方法
- android 动态添加View 两种方法
- Android中动态添加View的两种方式
- Android 在程序中动态添加 View 布局或控件
- Android 布局转化为View对象的两种方法
- Android 动态添加View布局
- 布局中动态添加View
- android 在布局中动态添加控件
- HTML中动态添加节点的两种方法
- 如何在IOS中使用实现Android view.gone 功能(swift版)cell(两种不同的布局)
- Android中如何动态的添加布局
- Android 在自定义view中动态设置布局规则
- Android-->View.setX()和.setY()的使用(移动布局,设置布局位置,动态添加View)
- android在java代码中动态添加组件及相关布局方法(LayoutParams)
- android中返回一个View的两种方法
- Javascript 异步加载详解(浏览器在javascript的加载方式)
- Spring工具类详解
- 再谈JSON -json定义及数据类型
- 利用事件对象实现线程同步
- Android中dp和px之间进行转换
- Android在布局中动态添加view的两种方法
- 可嵌套的C语言异常处理机制
- WSGI using uWSGI and nginx on Ubuntu 12.04 (Precise Pangolin)
- java.util.concurrent
- linux I2C设备驱动实例——EEPROM
- Hibernate One-to-Many Mappings 一对多关系映射
- 基于纹理与颜色的多层背景差分
- 计算机视觉与图像处理、模式识别、机器学习学科之间的关系
- UVA - 769 Magic of David Copperfield