中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-22 04:29:40 來源:腳本之家 閱讀:303 作者:Xd_Yu 欄目:移動開發

一、說明

添加視圖文件的時候有兩種方式: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 title = "動態添加布局";
 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的兩種方法(總結)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闽清县| 临西县| 金沙县| 张家川| 涡阳县| 林西县| 平安县| 西宁市| 锦州市| 祥云县| 平谷区| 衡山县| 定日县| 融水| 交城县| 宜黄县| 滦南县| 徐汇区| 龙泉市| 长垣县| 庐江县| 许昌市| 丹阳市| 宿松县| 神池县| 鸡泽县| 乐都县| 德格县| 瑞昌市| 辛集市| 琼结县| 阿拉善左旗| 开江县| 广丰县| 新宾| 许昌市| 承德市| 慈利县| 海原县| 永兴县| 芒康县|