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 andr

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>

 

 

 

 

 

 

 

 

目录
相关文章
|
Android开发
Android LayoutInflater.from(context).inflate()方法的作用
Android LayoutInflater.from(context).inflate()方法的作用
84 0
|
Android开发
Android ViewModel+LiveData实现Fragment间通信详解
Android ViewModel+LiveData实现Fragment间通信详解
195 0
|
Android开发 容器
View 的事件分发机制
View 的事件分发机制
View 的事件分发机制
view.setTag()的正确使用姿势
开发中,我们经常要进行数据的传递,会使用到view.setTag()和view.getTag()方法,主要用在view的点击事件中,可以让数据跟着view走,这种方法很方便。一般情况下给view设置一个tag就够用了,某些情况下我们需要给一个view设置多个tag,在需要的时候再分别取出来,这就需要用到view.setTag()的一个重载方法view.setTag(int key,final Object Tag)了。
|
容器 数据安全/隐私保护 JavaScript
View组件
一、使用方法 view组件是最常用的,也是最简单的视图容器。它是一个块级容器组件,它没有特殊的功能,主要用于布局展示,是布局中最基本的UI组件。几乎所有复杂的布局都可以通过嵌套view来实现。 view除了公共属性之外,还有以下几个私有属性 属性名 类型 默认值 说明hover-.
3045 0
|
前端开发 Java Spring
|
前端开发 Java Spring
|
算法 MySQL 关系型数据库