正在回答 回答被采纳积分+1
5回答
慕UI6705487
2018-06-24 08:48:30
慕UI6705487
2018-06-22 09:42:51
清单文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zhanlu.share"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".HomeActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
styles.xml文件
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="AppTheme.Base"></style> <style name="AppTheme.Base" parent="Theme.AppCompat"> <!--将ActionBar隐藏,这里使用ToolBar--> <item name="windowActionBar">false</item> <!-- 使用 API Level 22以上编译的话,要拿掉前綴字 --> <item name="windowNoTitle">true</item> <!--colorPrimary 对应ToolBar的颜色--> <item name="colorPrimary">@color/toolBarColor</item> <!--colorPrimaryDark对应状态栏的颜色--> <item name="colorPrimaryDark">@color/statusColor</item> <!--colorAccent 对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色。--> <item name="colorAccent">@color/editColor</item> <!--窗口的颜色 toolbar下方的区域--> <item name="android:windowBackground">@color/widowColor</item> <!--textColorPrimary是指我们导航栏中标题的颜色。--> <item name="textColorPrimary">@color/textColorPrimary</item> </style> </resources>
color.xml文件
<?xml version="1.0" encoding="utf-8"?> <resources> <!--Status bar color--> <color name="statusColor">#a60808</color> <!-- toolBar color --> <color name="toolBarColor">#da0909</color> <!--EditText,RadioButton,CheckBox color--> <color name="editColor">#000000</color> <!--Window color--> <color name="widowColor">#ffffff</color> <!--textColorPrimary--> <color name="textColorPrimary">#ffffff</color> </resources>
attrs.xml文件
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyToolbar"> <attr name="showSearchView" format="boolean"/> <attr name="leftButtonIcon" format="reference"/> <attr name="rightButtonIcon" format="reference"/> <attr name="myTitle" format="string"/> </declare-styleable> </resources>
MyToolbar.java文件
package com.zhanlu.share;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class MyToolbar extends Toolbar {
private TextView toolbar_title;
private EditText toolbar_searchview;
private ImageView toolbar_logo;
private ImageView toolbar_search;
private View ChildView;
private boolean showSearchView;
private Drawable left_button_icon;
private Drawable right_button_icon;
private String title;
private OnLeftButtonClickListener onLeftButtonClickListener;
private OnRightButtonClickListener onRightButtonClickListener;
public MyToolbar(Context context) {
super(context);
}
public MyToolbar(Context context, @Nullable AttributeSet attrs){
super(context, attrs);
//把自定义属性通过TypedArray读进来
TypedArray a=context.obtainStyledAttributes(attrs,R.styleable.MyToolbar);
showSearchView = a.getBoolean(R.styleable.MyToolbar_showSearchView, false);
left_button_icon = a.getDrawable(R.styleable.MyToolbar_leftButtonIcon);
right_button_icon = a.getDrawable(R.styleable.MyToolbar_rightButtonIcon);
title = a.getString(R.styleable.MyToolbar_myTitle);
//初始化界面
initView();
//初始化监听器
initListener();
a.recycle();
}
private void initView() {
if(ChildView==null){
ChildView=View.inflate(getContext(),R.layout.toolbar_layout,null);
toolbar_title = (TextView) ChildView.findViewById(R.id.toolbar_title);
toolbar_searchview = (EditText) ChildView.findViewById(R.id.toolbar_searchView);
toolbar_logo = (ImageView) ChildView.findViewById(R.id.logo);
toolbar_search = (ImageView) ChildView.findViewById(R.id.search);
//添加自定义的布局到Toolbar
addView(ChildView);
//这是初始化布局
if(showSearchView){
showSearchview();
hideTitle();
}else{
hideSearchview();
showTitle();
if(title!=null){
toolbar_title.setText(title);
}
if (left_button_icon != null) {
toolbar_logo.setImageDrawable(left_button_icon);
}
if (right_button_icon != null) {
toolbar_search.setImageDrawable(right_button_icon);
}
}
}
}
/**
* 设置标题或者搜索框是否显示
*/
private void showTitle() {
toolbar_title.setVisibility(View.VISIBLE);
}
private void hideTitle() {
toolbar_title.setVisibility(View.GONE);
}
private void showSearchview() {
toolbar_searchview.setVisibility(View.VISIBLE);
}
private void hideSearchview() {
toolbar_searchview.setVisibility(View.GONE);
}
//监听事件
private void initListener() {
toolbar_logo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (onLeftButtonClickListener != null) {
onLeftButtonClickListener.onClick();
}
}
});
toolbar_search.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (onRightButtonClickListener != null) {
onRightButtonClickListener.onClick();
}
}
});
}
//让接口外露,以便在主文件中调用
public interface OnLeftButtonClickListener {
void onClick();
}
public interface OnRightButtonClickListener {
void onClick();
}
public void setOnLeftButtonClickListener(OnLeftButtonClickListener listener) {
onLeftButtonClickListener = listener;
}
public void setOnRightButtonClickListener(OnRightButtonClickListener listener) {
onRightButtonClickListener = listener;
}
/**
* 重写设置标题的方法
*
* @param title
*/
@Override
public void setTitle(CharSequence title) {
toolbar_title.setText(title);
}
@Override
public void setTitle(@StringRes int resId) {
toolbar_title.setText(resId);
}
/**
* 设置左右按钮的图标
*
* @param d
*/
public void setLeftButtonIconDrawable(Drawable d) {
toolbar_logo.setImageDrawable(d);
}
public void setRightButtonIconDrawable(Drawable d) {
toolbar_search.setImageDrawable(d);
}
/**
* 标题与搜索框的切换
*/
public void setShowSearchView() {
hideTitle();
showSearchview();
}
public void setShowTitleView(String title) {
hideSearchview();
showTitle();
toolbar_title.setText(title);
}
}
jfhdibrbfjd
2018-06-17 10:49:55
看不清啊看不清
Android多媒体开发与应用2018版
- 参与学习 人
- 解答问题 241 个
本专题是动画、游戏、音视频等实际应用开发必备技能。课程深入到Android事件总线,利用主流框架实现消息推送、自定义事件统计分析等功能。最后带你开发一款利用传感器实现计步、距离、热量等功能的App。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星