版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79260181
public class ContactsFragment extends BaseFragment {
/**
* 标志位,标志已经初始化完成
*/
private boolean isPrepared;
/**
* 是否已被加载过一次,第二次就不再去请求数据了
*/
private boolean mHasLoadedOnce;
private TextView textView;
private Toolbar toolbar;
SimpleToolbar simpleToolbar;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (mView == null) {
// 需要inflate一个布局文件 填充Fragment
mView = inflater.inflate(R.layout.fragment_contacts, container, false);
initView();
isPrepared = true;
// 实现懒加载
lazyLoad();
}
//缓存的mView需要判断是否已经被加过parent, 如果有parent需要从parent删除,要不然会发生这个mView已经有parent的错误。
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
parent.removeView(mView);
}
return mView;
}
/**
* 初始化控件
*/
private void initView() {
simpleToolbar = find(R.id.toolbar_contacts);
simpleToolbar.setMainTitle("联系人");
simpleToolbar.setRightTitleClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MyApplication.getContext(),"plus",Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void lazyLoad() {
if (!isPrepared || !isVisible || mHasLoadedOnce) {
return;
}
//填充各控件的数据
mHasLoadedOnce = true;
}
public static ContactsFragment newInstance(String param1) {
ContactsFragment fragment = new ContactsFragment();
Bundle args = new Bundle();
args.putString("agrs1", param1);
fragment.setArguments(args);
return fragment;
}
}
public class SimpleToolbar extends Toolbar {
/**
* 中间Title
*/
private TextView mTxtMiddleTitle;
/**
* 右侧Title
*/
private TextView mTxtRightTitle;
public SimpleToolbar(Context context) {
super(context);
}
public SimpleToolbar(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public SimpleToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mTxtMiddleTitle = (TextView) findViewById(R.id.middle_title);
mTxtRightTitle = (TextView) findViewById(R.id.right_title);
}
//设置中间title的内容
public void setMainTitle(String text) {
this.setTitle(" ");
mTxtMiddleTitle.setVisibility(View.VISIBLE);
mTxtMiddleTitle.setText(text);
}
//设置中间title的内容文字的颜色
public void setMainTitleColor(int color) {
mTxtMiddleTitle.setTextColor(color);
}
//设置title右边文字
public void setRightTitleText(String text) {
mTxtRightTitle.setVisibility(View.VISIBLE);
mTxtRightTitle.setText(text);
}
//设置title右边文字颜色
public void setRightTitleColor(int color) {
mTxtRightTitle.setTextColor(color);
}
//设置title右边图标
public void setRightTitleDrawable(int res) {
Drawable dwRight = ContextCompat.getDrawable(getContext(), res);
dwRight.setBounds(0, 0, dwRight.getMinimumWidth(), dwRight.getMinimumHeight());
mTxtRightTitle.setCompoundDrawables(null, null, dwRight, null);
}
//设置title右边点击事件
public void setRightTitleClickListener(OnClickListener onClickListener){
mTxtRightTitle.setOnClickListener(onClickListener);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto">
<view.SimpleToolbar
android:id="@+id/toolbar_contacts"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" >
<TextView
android:id="@+id/middle_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="20sp"
android:textColor="@color/white"
/>
<TextView
android:id="@+id/right_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:drawableRight="@drawable/plus"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="16sp"
android:visibility="visible"
/>
</view.SimpleToolbar>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="contacts"
/>
</LinearLayout>