国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

基于Android在布局中動態添加view的兩種方法(總結)

2019-10-22 18:26:40
字體:
來源:轉載
供稿:網友

一、說明

添加視圖文件的時候有兩種方式: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)

<linearlayout  xmlns:android="http://schemas.android.com/apk/res/android" 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">  </imageview></linearlayout>

activity_dynamic

<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">  </include> </linearlayout>

3、MainActivity

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 MainActivityextends Activity implements OnClickListener{ private Context mContext; private TextView mTv_title; private String private StatedButton mSbtn_back; private LinearLayout mLl_parent; @Override protected 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);  }  @Override public void onClick(View v) {  // TODO 控件單擊事件  switch (v.getId()) {  case R.id.sbtn_navback:   this.finish();   break;  default:   break;  } }}

以上這篇基于Android在布局中動態添加view的兩種方法(總結)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荆州市| 敦化市| 无为县| 永丰县| 射阳县| 孟津县| 开封县| 阳信县| 米林县| 湖南省| 迭部县| 八宿县| 太仆寺旗| 仙居县| 巴里| 正镶白旗| 阿鲁科尔沁旗| 措勤县| 阜阳市| 永嘉县| 周口市| 绥阳县| 叶城县| 交口县| 开鲁县| 梁河县| 平利县| 武定县| 德昌县| 巴里| 黄骅市| 昭苏县| 富锦市| 达尔| 嵊州市| 嵊州市| 海兴县| 铁力市| 南陵县| 曲松县| 广汉市|