您的位置:首页 > 移动开发 > Android开发

创建Android自定义组合控件

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

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



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

<?xml version="1.0" encoding="utf-8"?>
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中,我们编写如下代码:

<?xml version="1.0" encoding="utf-8"?>
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");

883a
mItem3.setItemText("我是自定义布局3");

}

}


 
最后运行程序,效果如下:



本人安卓刚入门,纯属菜鸟,如有错误,请给予指出指导,谢谢了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: