`

android自定义组件

阅读更多

source code:

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyView extends LinearLayout {

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray typedArray=context.obtainStyledAttributes(attrs, R.styleable.MyViewText);
        TextView textView=new TextView(context);
       
        int count=typedArray.getIndexCount();
        for (int i = 0; i < count; i++) {
            int attr=typedArray.getIndex(i);
            switch (attr) {
            case R.styleable.MyViewText_Text:
                int resource=typedArray.getResourceId(R.styleable.MyViewText_Text, 0);
                System.out.println(resource);
                if(resource>0){//通过引用设值方式
                    textView.setText(typedArray.getResources().getText(resource));
                }else{//通过直接设值方式
                    textView.setText(typedArray.getString(R.styleable.MyViewText_Text));
                }
                break;
            default:
                break;
            }
        }
        addView(textView);
        System.out.println("getChildCount:"+getChildCount());
        System.out.println(getChildAt(0));
        setBackgroundColor(0xaa00aa);
        typedArray.recycle();
    }

}

layout code:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res/com.zhonghong.tsp.share"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <view class="com.demo.view.MyView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:Text="@string/app_name">
        <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/>
    </view>
    <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher"/>
</RelativeLayout>

 

attrs.xml code

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyViewText">

             <!--同时兼容两种设值方式-->
        <attr name="Text" format="reference|string"></attr>
    </declare-styleable>
</resources>

分享到:
评论

相关推荐

    Android自定义组件开发

    本文将深入探讨Android自定义组件的开发过程,旨在帮助开发者更好地理解和实践这一关键技能。 首先,理解Android组件的基本概念至关重要。Android组件是应用程序的基本构建块,主要包括Activity、Service、...

    Android自定义组件开发详解.docx

    【Android自定义组件开发详解】 Android自定义组件的开发是Android应用开发中的一个重要部分,它涉及到自定义View和ViewGroup的创建,以及对canvas和paint的深入理解和运用。自定义组件能够满足开发者对于UI设计的...

    Android自定义组件开发详解

    《Android自定义组件开发详解》一书的作者李赞红在序言中表达了对Android开发教学的热情和对学员成长的关切。他提到,尽管市场上有许多Android开发相关的书籍,但大多数要么偏重理论、要么实践指导不足,或者只是...

    android自定义组件动画基础班

    本教程将带你深入理解“android自定义组件动画基础班”的核心概念。 首先,我们要了解在Android中创建自定义组件的基本步骤。这通常包括: 1. **创建自定义View类**:这是自定义组件的第一步,你需要继承已有的...

    Android自定义组件开发详解自制书签目录版方便看.pdf

    Android自定义组件开发是一项高级技术,它允许开发者创建具有特定功能的UI组件,以满足应用程序的特殊需求。在深入了解自定义组件的开发之前,需要掌握一些基础知识,比如Java基础、面向对象编程(OOP)以及Android...

    Android自定义组件一[文].pdf

    综上所述,Android自定义组件是提升应用体验和满足个性化需求的重要手段。通过熟练掌握自定义组件的创建方法和技巧,开发者能够更好地应对各种复杂场景,创造出独具特色的用户界面。在实际开发中,结合属性动画、...

    android自定义组件简单Demo

    在Android开发中,自定义组件是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和外观的视图。本教程将通过一个简单的“TestOurselfWidget”实例来讲解如何实现自定义组件。自定义组件可以增强应用的用户...

    android自定义组件demo

    这个"android自定义组件demo"实例提供了三种自定义组件的示例,是学习和理解Android自定义组件的一个宝贵资源。下面我们将深入探讨这三个自定义组件的关键知识点,并提供相关的实践指导。 1. **自定义View的基本...

    Android 自定义组件开发

    以下是对Android自定义组件开发的详细解析: 一、自定义组件基础 1. 创建自定义组件:自定义组件通常继承自Android内置的View或ViewGroup类。通过重写构造函数、onDraw()、onMeasure()和onLayout()等关键方法,可以...

    android 自定义组件

    下面将详细介绍Android自定义组件的相关知识。 首先,我们要了解自定义组件的基本概念。在Android中,组件通常指的是继承自View或ViewGroup的类。View是Android UI系统中最基本的元素,如按钮、文本框等,而...

    android自定义组件(六) 刷新自定义控件

    在Android开发中,自定义组件是一项重要的技能,它允许开发者根据特定需求打造独特的用户界面。本文将深入探讨如何实现一个自定义的刷新控件,以此为应用增添个性化和交互性的功能。我们将基于提供的链接...

    android自定义组件(二)

    在Android开发中,自定义组件是提升应用独特性和用户体验的重要手段...在"android自定义组件(二)"的博客中,作者可能详细讲解了上述某个或多个方面,提供了具体的代码示例和实战经验,对深入理解自定义组件有极大帮助。

    Android 自定义组件卫星菜单的实现

    本篇文章将详细探讨如何实现一个Android自定义组件——卫星菜单(Satellite Menu),也称为ArcMenu。卫星菜单是一种以中心按钮为触发点,围绕中心点展开的一组按钮布局,常用于导航或展示附加功能。 首先,我们定义...

    android自定义组件介绍

    通过深入研究这份文档,开发者将能够掌握创建高效、功能丰富的Android自定义组件的技巧。 总的来说,自定义组件是Android开发中的一个重要课题,它允许开发者充分发挥创造力,打造独一无二的应用界面。通过不断实践...

    Android自定义组件与特效

    本文档详细讲解了Android自定义组件与特效,清晰易懂。

    android自定义组件(三)

    本文将深入探讨自定义组件的实现原理和步骤,以“android自定义组件(三)”为主题,结合博客http://blog.csdn.net/ethan_xue/article/details/7314907中的内容进行解析。 首先,自定义组件的基础是理解Android的View...

    《Android自定义组件开发详解》PDF

    《Android自定义组件开发详解》

    Android自定义组件之精美日历实现(内容、样式可扩展)

    在Android开发中,自定义组件是一项重要的技能,它允许开发者根据需求定制独特的用户界面和交互体验。本主题将深入探讨如何实现一个精美的、内容和样式可扩展的日历组件。这个自定义日历控件可以帮助你创建具有高度...

Global site tag (gtag.js) - Google Analytics