亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

基于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

普兰县| 剑川县| 南通市| 璧山县| 新乡市| 措勤县| 霍城县| 江华| 乌兰浩特市| 靖安县| 黄山市| 灌南县| 项城市| 高唐县| 溧水县| 奇台县| 莱西市| 永昌县| 普兰县| 乌拉特中旗| 尖扎县| 如皋市| 万盛区| 温宿县| 交口县| 南康市| 百色市| 清水县| 龙泉市| 鄱阳县| 南平市| 郎溪县| 广东省| 永新县| 呼伦贝尔市| 林甸县| 木兰县| 库尔勒市| 淳化县| 息烽县| 修武县|