创建Android自定义组合控件

            最近Android刚入门的我,正在学习自定义控件,刚开始觉得为什么要写自定义的控件呢,想要实现的布局可以直接在xml文件中实现就好啊,后来我们组的大神跟我说这可是Android开发者的必备技能!在一个项目中,页面布局有一些都是差不多的,每个页面既然都差不多的布局,我们还要为每一个相似的布局编写相似的xml文件,这必然会造成项目大量冗余代码,所以不说废话了,还是看看让我最近纠结了一段时间的自定义控件实现吧!


首先我们要编写自定义控件的布局item.xml,我们要实现以下这种效果:


然后编写一个类CustomWidget.java,这个类的类名就是我们所自定义的控件的名字,有了这个类我们就可以像使用其他安卓控件一样使用我们自己定义的控件了。


   
   

   
   
    
    
    
        
    
     
     
    
    
     
     

    
     
     

    
    
    

    
    
    

   
   package com.sun.customwidgetdemo;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class CustomWidget extends RelativeLayout{

	private ImageView mIcon;
	private ImageView mArrow;
	private TextView mText;
	private View mLine;
	public CustomWidget(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView(context);
	}

	public void initView(Context context) {
		LayoutInflater.from(context).inflate(R.layout.item, this);
		mIcon = (ImageView)findViewById(R.id.iv_icon);
		mArrow = (ImageView)findViewById(R.id.iv_arrow);
		mText = (TextView)findViewById(R.id.tv_text);
		mLine = (View)findViewById(R.id.v_line);
		
	}
	
	public void setItemText(CharSequence text) {
		mText.setText(text);
	}
	
	public void setIconId(int resId) {
		mIcon.setVisibility(VISIBLE);
		mIcon.setImageResource(resId);
	}
   
	public void setArrowVisibility(int visibility) {
		mArrow.setVisibility(visibility);
	}
	
	public void setLineVisibility(int visibility) {
		mLine.setVisibility(visibility);
	}
}

接下来就可以来应用我们已经定义的控件,在activity_main.xml文件和MainActivity.java中,我们编写如下代码:


   
   

   
   
    
    
    
    
    
    
    
    
    
    
    
    
    

   
   package com.sun.customwidgetdemo;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

	
	private CustomWidget mItem1, mItem2, mItem3;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         initView();
    }

    public void initView() {
    	mItem1 = (CustomWidget)findViewById(R.id.cw_item1);
    	mItem2 = (CustomWidget)findViewById(R.id.cw_item2);
    	mItem3 = (CustomWidget)findViewById(R.id.cw_item3);
    	
    	mItem1.setItemText("我是自定义布局1");
    	mItem2.setItemText("我是自定义布局2");
    	mItem3.setItemText("我是自定义布局3");
    	 	
    }
    
}
 
最后运行程序,效果如下:


本人安卓刚入门,纯属菜鸟,如有错误,请给予指出指导,谢谢了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值