zoukankan      html  css  js  c++  java
  • [Android学习笔记]组合控件的使用

    组合控件的使用

    开发过程中,多个UI控件需要协同工作,相互交互之后,才可完成一个完整的业务需求,此时可把这些控件封装成为一个整体,相互之间的交互逻辑封装其中,外部调用可无需
    关心内部逻辑,只需获取处理后的结果即可


    创建组合控件步骤如下:
    1.创建xml布局,定义组合控件的外观
    2.定义组合控件类,此类一般继承原生ViewGroup控件,如:LinearLayout
    3.在组合控件类中获取对应UI控件,编写内部业务需求

    ex:
    创建一个带textView的Button

    1.xml布局文件textview_btn.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_gravity="center"
        android:orientation="vertical" >
        <TextView android:id="@+id/textView"
            android:text="textView"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <Button android:id="@+id/btn"
            android:text="button"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    textview_btn.xml

    2.TextViewButton.java

    public class TextViewButton extends LinearLayout
    {
        ////////////////////////////////////////////////////////////////////////////////////////////// Controls
        /**
         *TextView控件引用 
         */
        private TextView textView;
        
        /**
         * Button控件引用
         */
        private Button btn;
        
        ////////////////////////////////////////////////////////////////////////////////////////////// Data
        private int step;
        
        public int getStep() {
            return step;
        }
    
        public void setStep(int step) {
            this.step = step;
        }
    
        //////////////////////////////////////////////////////////////////////////////////////////// Construction
        public TextViewButton(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
            getControlsRef(context);
        }
        
        public TextViewButton(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            // TODO Auto-generated constructor stub
            getControlsRef(context);
        }
    
        public TextViewButton(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
            getControlsRef(context);
        }
    
        /////////////////////////////////////////////////////////////// Business Logic
        private void getControlsRef(Context context)
        {
             // 获取控件引用
             View view = LayoutInflater.from(context).inflate(R.layout.textview_btn,null);
             btn = (Button)view.findViewById(R.id.btn);
             textView = (TextView)view.findViewById(R.id.textView);
             
             // 设置监听
             setListeners();
        }
        
        private void setListeners()
        {
            btn.setOnClickListener(new View.OnClickListener() {
                
                // 内部业务逻辑
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    textView.setText(step+"");
                }
                
            });
        }
    }
    TextViewButton.java

    3.使用组合控件
      a).前端声明
      b).获得引用

    <RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
        <com.example.views.TextViewButton 
            android:id="@+id/textViewBtn"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </com.example.views.TextViewButton>
    </RelativeLayout>
    activity_main.xml
    人生就是一局不能Again的DOTA
  • 相关阅读:
    【leetcode】Sum Root to Leaf Numbers(hard)
    【leetcode】First Missing Positive(hard) ☆
    【leetcode】Next Permutation(middle)
    【好玩的应用】QQ连连看辅助工具
    【leetcode】Binary Tree Preorder Traversal (middle)★
    【leetcode】Reverse Words in a String(hard)☆
    【leetcode】Same Tree(easy)
    【leetcode】Factorial Trailing Zeroes(easy)
    【leetcode】Maximum Gap(hard)★
    Behavioral模式之Chain of Responsibility模式
  • 原文地址:https://www.cnblogs.com/hellenism/p/3663921.html
Copyright © 2011-2022 走看看