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>