android 动态,Android 动态添加View布局

释放双眼,带上耳机,听听看~!

项目当中遇到了,RecycleView 嵌套RecycleView布局的需求来展示订单详情,都知道 这样都有滑动,点击事件的布局进行嵌套,你会有好多的BUG等着你去改。所以换了一下思路。采用动态添加布局的方式来避免这个问题。

不做不知道,做了其实也很简单,注意事项,都写在注释上 不在赘述。

java代码

package com.android.study;

import android.app.Activity;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.TextView;

public class Main extends Activity {

/** Called when the activity is first created. *//***** 功能:点击按钮动态增加view** 学习 LayoutInflater的使用办法.****/private Button buttonAdd1;

private Button buttonAdd2;

private LayoutInflater layoutInflater;

private LinearLayout mainLayout;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//方法一:取得LayoutInflater

layoutInflater = getLayoutInflater();

//方法二:

//layoutInflater = LayoutInflater.from(this);

//方法三:

//layoutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);

mainLayout = (LinearLayout)findViewById(R.id.layout01);

buttonAdd1 = (Button)findViewById(R.id.button1);

buttonAdd2 = (Button)findViewById(R.id.button2);

//给按钮增加监听事件

buttonAdd1.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

//根据LayoutInflater创建一个新的TextView,所以下面这一行代码不能放到外面事先生成.

TextView newTextView = (TextView)layoutInflater.inflate(R.layout.infater01,null);

newTextView.setText("卧槽,这都可以 ");

//查看每次生成的TextView是否相同

newTextView.setText(newTextView.getText() + "::hashCode " + newTextView.toString());

//把TextView加入的当前layout中,R.id.layout01 是主layout的xml里面的id,如果你没有,需要加上

mainLayout.addView(newTextView);

//再加一次看能否成功.不能成功,说明了addView 必须不相同.

//((LinearLayout)findViewById(R.id.layout01)).addView(newTextView);

}

});

buttonAdd2.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

layoutInflater.inflate(R.layout.infater02,mainLayout);

//可以重复添加,能明白其中的原因吧

layoutInflater.inflate(R.layout.infater02,mainLayout);

}

});

}

}

xml

main

android:id="@+id/layout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="方法一">

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="方法二">

inf01

android:id="@+id/textView01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="---------infater02--------" />

inf02

android:id="@+id/textView01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="---------infater01--------" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值