Android中动态界面布局

这篇博客介绍了如何在Android中动态创建和添加界面布局。首先展示了通过代码直接创建TextView和Button,并将其添加到LinearLayout中。接着,博主演示了如何从已有的XML文件中加载视图并添加到布局中,利用LayoutInflater实现这一过程。文章提供了具体的代码示例,帮助读者理解这两种动态布局的方法。
摘要由CSDN通过智能技术生成

第一种:直接用代码写:

xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layout"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="我是xml生成的!"
    />
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="请在我后面添加更多的view"   
/>
<LinearLayout
    android:id="@+id/newLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
>
</LinearLayout>
<TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="我是xml生成的2"
/>
</LinearLayout>
 

Activity:

package yt.com.mu;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class mainActivity extends Activity {
 private Button button1=null;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button1=(Button) findViewById(R.id.button);
        button1.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
          createView();
          addToButton();
   }
  });
    }
    public void addToButton(){
     ViewGroup v=(ViewGroup) findViewById(R.id.newLayout);
     TextView tv1=new TextView(this);
     TextView tv2=new TextView(this);
     tv1.setText("我是空LinearLayout里添加的第一个TextView!");
     tv2.setText("我是空LinearLayout里添加的第二个TextView!");
     v.addView(tv1);
     v.addView(tv2);
     LinearLayout ll=new LinearLayout(this);
     LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
     ll.setLayoutParams(params);
     TextView tv3=new TextView(this);
     tv3.setText("我是添加的LinearLayout中的TextView!");
     ll.addView(tv3);
     v.addView(ll);
    }
    public void createView(){
     LinearLayout ll=(LinearLayout) findViewById(R.id.layout);
     TextView t=new TextView(this);
     t.setText("这是第一个添加的LinearLayout中添加的TextView!");
     ll.addView(t);
    }
}

 

哈哈,学过Me的童鞋,是不是感觉很熟悉呢。

 

第二种:从一个已存在并定义好的xml文件中取得要添加的视图,在程序中只需要决定何时调用此xml就可以。

 

关键代码:

  public void type2(){

   LayoutInflater inflater=this.getLayoutInflater();

   ViewGroup v=(ViewGroup)findViewById(R.id.newLayout);

   inflater.inflate(R.id.type2,v);

}

 

其中:type2是要调用的xml

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值