自定义View自定义标题
来源:互联网 发布:mac设置隐藏文件夹 编辑:程序博客网 时间:2024/06/05 05:26
这是标签的布局activity_title:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/titlefit" android:layout_width="match_parent" android:layout_height="50dp" android:background="#ff0000" android:orientation="horizontal"> <Button android:id="@+id/btn_return" android:layout_width="wrap_content" android:layout_height="50dp" android:background="#0000ff" android:text="返回" /> <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="#ff8800" android:gravity="center" android:text="自定义标题栏" /> <Button android:id="@+id/btn_more" android:layout_width="wrap_content" android:layout_height="50dp" android:background="#0000ff" android:text="更多" /></LinearLayout>
在values下创建attrs.xml并定义属性:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyTitleFit"> <!--定义标题的属性--> <attr name="title" format="string"></attr> <attr name="titleSize" format="dimension"></attr> <attr name="titleColor" format="color"></attr> <attr name="bgcolor" format="color"></attr> <!--定义左边按钮的属性--> <attr name="btnlefttext" format="string"></attr> <attr name="btnleftSize" format="dimension"></attr> <attr name="btnleftcolor" format="color"></attr> <attr name="btnleftbgcolor" format="reference"></attr> <!--定义右边按钮的属性--> <attr name="btnrighttext" format="string"></attr> <attr name="btnrightSize" format="dimension"></attr> <attr name="btnrightcolor" format="color"></attr> <attr name="btnrightbgcolor" format="reference"></attr> </declare-styleable></resources>
在res创建drawable用来设置改变颜色:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <!--定义改变按钮颜色--> <item android:drawable="@color/colorAccent" android:state_pressed="true"/> <item android:drawable="@color/colorPrimary" android:state_pressed="false"/></selector>
这是activity_main.xml的布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.heihei.weekedproject.MainActivity"> <com.heihei.weekedproject.MyTitleFit android:id="@+id/mytitlefit" android:layout_width="match_parent" android:layout_height="80dp" app:title="这是Mainactivity" app:titleSize="12sp" app:titleColor="#000000" app:bgcolor="#ff8800" app:btnleftbgcolor="@drawable/selector" app:btnleftSize="12sp" app:btnlefttext="返回" app:btnleftcolor="#ffffff" app:btnrightbgcolor="@drawable/selector" app:btnrightSize="12sp" app:btnrighttext="更多" app:btnrightcolor="#ffffff" > </com.heihei.weekedproject.MyTitleFit></LinearLayout>
设置自己定义属性的类
public class MyTitleFit extends LinearLayout { private Button btn_return; private Button btn_more; private String title; private float titleSize; private int titleColor; private int bgColor; private LinearLayout titlefit; private String btnlefttext; private float btnleftSize; private int btnleftColor; private String btnrighttext; private float btnrightSize; private int btnrightColor; private TextView tv_title; private Drawable btnrightbgcolor; private Drawable btnleftbgcolor; public MyTitleFit(Context context) { super(context); //创建方法 initView(context, null); } public MyTitleFit(Context context, @Nullable AttributeSet attrs) { super(context, attrs); //创建方法 initView(context, attrs); } //初始化控件的方法 private void initView(Context context, AttributeSet attrs) { //找到关于标题的xml View inflate = inflate(context, R.layout.activity_title, this); //依次找到控件,左右两边都是按钮中间是TextView btn_return = (Button) inflate.findViewById(R.id.btn_return); btn_more = (Button) inflate.findViewById(R.id.btn_more); tv_title = (TextView) inflate.findViewById(R.id.tv_title); titlefit = (LinearLayout) inflate.findViewById(R.id.titlefit); //点击左边返回的按钮的监听,并调用接口 btn_return.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (leftOnClickListener != null) { leftOnClickListener.leftClick(v); } } }); //点击右边按钮的监听 btn_more.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (rightOnClickListener != null) { rightOnClickListener.rightClick(v); } } }); if (attrs == null) { return; } //初始化自定义属性的方法 initattrs(context, attrs); //把控件设置定义属性的方法 setViewContent(); } private void initattrs(Context context, AttributeSet attrs) { if (attrs == null) { return; } //找到自己定义的属性 TypedArray typedarrat = context.obtainStyledAttributes(attrs, R.styleable.MyTitleFit); //获得给标题定义的属性 文本 文字大小 文字颜色 背景颜色 title = typedarrat.getString(R.styleable.MyTitleFit_title); titleSize = typedarrat.getDimensionPixelSize(R.styleable.MyTitleFit_titleSize, 16); titleColor = typedarrat.getColor(R.styleable.MyTitleFit_titleColor, Color.RED); bgColor = typedarrat.getColor(R.styleable.MyTitleFit_bgcolor, Color.GREEN); //获得给左边返回按钮定义的属性 文本 文字大小 文字颜色 背景颜色 btnleftSize = typedarrat.getDimensionPixelSize(R.styleable.MyTitleFit_btnleftSize, 12); btnlefttext = typedarrat.getString(R.styleable.MyTitleFit_btnlefttext); btnleftColor = typedarrat.getColor(R.styleable.MyTitleFit_btnleftcolor, Color.YELLOW); btnleftbgcolor = typedarrat.getDrawable(R.styleable.MyTitleFit_btnleftbgcolor); //获得给右边更多按钮定义的属性 文本 文字大小 文字颜色 背景颜色 btnrightSize = typedarrat.getDimensionPixelSize(R.styleable.MyTitleFit_btnrightSize, 14); btnrighttext = typedarrat.getString(R.styleable.MyTitleFit_btnrighttext); btnrightColor = typedarrat.getColor(R.styleable.MyTitleFit_btnrightcolor, Color.BLUE); btnrightbgcolor = typedarrat.getDrawable(R.styleable.MyTitleFit_btnrightbgcolor); } private void setViewContent() { //给左边按钮附上默认属性 文本 文字大小 文字颜色 背景颜色 btn_return.setText(btnlefttext); btn_return.setTextSize(btnleftSize); btn_return.setTextColor(btnleftColor); btn_return.setBackground(btnleftbgcolor); //给右边按钮附上默认属性 文本 文字大小 文字颜色 背景颜色 btn_more.setText(btnrighttext); btn_more.setTextSize(btnrightSize); btn_more.setTextColor(btnrightColor); btn_more.setBackground(btnrightbgcolor); //给标题附上默认属性 文本 文字大小 文字颜色 背景颜色 tv_title.setText(title); tv_title.setTextSize(titleSize); tv_title.setTextColor(titleColor); tv_title.setBackgroundColor(bgColor); } //定义一个接口,实现点击左边返回按钮为了实现Toast等一些操作 public interface leftOnClickListener { void leftClick(View v); } private leftOnClickListener leftOnClickListener; public void SetleftOnClickListener(leftOnClickListener mleftOnClickListener) { this.leftOnClickListener = mleftOnClickListener; } //定义一个接口,实现点击右边更多按钮为了实现Toast等一些操作 public interface rightOnClickListener { void rightClick(View v); } private rightOnClickListener rightOnClickListener; public void SetrightOnClickListener(rightOnClickListener mrightOnClickListener) { this.rightOnClickListener = mrightOnClickListener; }}
MainActivity 设置接口
public class MainActivity extends AppCompatActivity { private MyTitleFit mytitlefit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到在MainActivity的自定义布局 mytitlefit = (MyTitleFit) findViewById(R.id.mytitlefit); //调用它的接口,点击左边返回按钮让它Toast一些内容 mytitlefit.SetleftOnClickListener(new MyTitleFit.leftOnClickListener() { @Override public void leftClick(View v) { Toast.makeText(MainActivity.this, "这是左边的按钮", Toast.LENGTH_SHORT).show(); } });//调用它的接口,点击右边更多按钮让它Toast一些内容 mytitlefit.SetrightOnClickListener(new MyTitleFit.rightOnClickListener() { @Override public void rightClick(View v) { Toast.makeText(MainActivity.this, "这是右边的按钮", Toast.LENGTH_SHORT).show(); } }); }}
阅读全文
0 0
- 自定义View自定义标题
- 自定义View(圆形标题内容)
- 自定义View(自定义标题+颜色选择器)
- 标题布局和自定义view进度条 及自定义ViewGroup
- 自定义标题
- 自定义View 之 图标&文本 标题信息小控件
- view 自定义标题+点击才开始的进度条+使用二维码
- 自定义view
- 自定义View
- 自定义view
- 自定义View
- 自定义View
- 自定义view
- 自定义View
- 自定义view
- 自定义view
- 自定义View
- 自定义View
- C++ explicit关键字
- jdbc增删改查的工具类
- 小工具:火车票查询
- Java多线程--对thread.join的理解
- 今后的职业规划
- 自定义View自定义标题
- 使用IntelliJ IDEA 14和Maven创建java web项目
- LinkedList
- selenium webdriver 学习总结-Selenium 控制测试流_补充显示等待(五)
- HDU6186-CS Course
- HDU多校赛9 HDU4969 Just a Joke
- Android_请求网络数据展示到Listview
- C++设计模式----单例模式
- Selenium Webdriver 学习总结-Advanced Usage-Cookie、Profile(七)