LayoutInflater,自己写一个View组件

MainActivity.xml

 

package com.example.uidemo1;

 

import android.os.Bundle;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.LinearLayout;

import android.widget.Toast;

import android.support.v4.app.NavUtils;

import android.text.AndroidCharacter;

 

public class MainActivity extends Activity {

 

         // 获得activity_main中的这个button

         Button button1;

         EditText editText1;

         EditText editText2;

 

         public static final int BID = 1;

 

         OnClickListener onClickListener = new OnClickListener() {

 

                   @Override

                   public void onClick(View v) {

                            switch (v.getId()) {

                            case R.id.button1:   //在这里中有两个button1的,为了区别开来,使用tag标记。

                                     if(v.getTag().toString().equals("xml_btn")) {

                                               // 显示提示按钮

                                               AlertDialog.Builder dialogBuilder = new Builder(

                                                                 MainActivity.this);

                                               Toast.makeText(MainActivity.this, "这里是点击activity_main.xml中的效果",

                                                                 Toast.LENGTH_LONG).show();

                                               dialogBuilder.setTitle("这里是点击activity_main.xml中的效果");

                                               dialogBuilder.setMessage("activity_main.xml");

                                               dialogBuilder.setPositiveButton("ok", null);

                                               dialogBuilder.setNegativeButton("ok2", null);

                                               dialogBuilder.show();

                                     }

                                     if (v.getTag().toString().equals("dialog_btn")) {

                                               //文本框2中显示的文本框1中的内容。

                                               editText2.setText(editText1.getText().toString());

                                     }

                                     break;

                            case BID:

                                     AlertDialog.Builder dialoBuilder = new Builder(

                                                        MainActivity.this);

                                     dialoBuilder.setTitle("自己生成的按钮中添加视图效果");

                                     // 获得LayoutInflater

                                     LayoutInflater inflater = (LayoutInflater) MainActivity.this

                                                        .getSystemService(MainActivity.this.LAYOUT_INFLATER_SERVICE);

                                     View view = inflater.inflate(R.layout.dialog, null);

                                     //因为dialog.xml封装成了一个view对象

                                     editText1 = (EditText) view.findViewById(R.id.editText1);

                                     editText2= (EditText) view.findViewById(R.id.editText2);

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

                                     button1.setOnClickListener(onClickListener);

                                     dialoBuilder.setView(view);

                                    

                                     dialoBuilder.setNegativeButton("ok2", null);

                                     dialoBuilder.show();

                                     break;

                            default:

                                     break;

                            }

 

                   }

         };

 

         @Override

         public void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

 

                   // 第一种创建LayoutInflater的方法

                   // LayoutInflater inflater = (LayoutInflater)this.getSystemService

                   // (this.LAYOUT_INFLATER_SERVICE);

 

                   // 第二种创建inflater的方式。

                   LayoutInflater inflater = LayoutInflater.from(MainActivity.this);

                   // activity_main变成一个view对象

                   View view = inflater.inflate(R.layout.activity_main, null);

                   Button myButton = new Button(this);

                   myButton.setText("我自己的按钮");

                   //设置宽度

                   myButton.setWidth(200);

                   myButton.setId(BID);

                   // 创建一个linearLayout.

                   LinearLayout linearLayout = new LinearLayout(this);

                   linearLayout.addView(myButton);

 

                   // 如果想将自己的linearLayout添加到activity_main,

                   // 注意要将下面的this改成view,否则将出现错误(空指针异常)

                   LinearLayout linearLayout2 = (LinearLayout) view

                                     .findViewById(R.id.lin1);

                   linearLayout2.addView(linearLayout);

 

                   // 说明只要在setContentView中加上一个view即可。

                   setContentView(linearLayout2);

 

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

                   button1.setOnClickListener(onClickListener);

                   // 为我自己的button设置监听。

                   myButton.setOnClickListener(onClickListener);

         }

}

 

 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:id="@+id/lin1">

 

    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:tag="xml_btn"

        android:text="activity_main中的按钮"/>

</LinearLayout>

 

 

 

dialog.xml

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical" >

 

    <EditText

        android:id="@+id/editText1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:ems="10" >

 

        <requestFocus />

    </EditText>

 

    <EditText

        android:id="@+id/editText2"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:ems="10" />

 

    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:tag="dialog_btn"

        android:text="将上面文本框中的内容显示在下面" />

</LinearLayout>

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值