|
|
@@ -0,0 +1,157 @@
|
|
|
+package com.modular.apputils.activity;
|
|
|
+
|
|
|
+import android.graphics.drawable.Drawable;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.support.annotation.Nullable;
|
|
|
+import android.support.v7.app.AppCompatActivity;
|
|
|
+import android.support.v7.widget.AppCompatTextView;
|
|
|
+import android.support.v7.widget.Toolbar;
|
|
|
+import android.text.TextUtils;
|
|
|
+import android.view.MenuItem;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewStub;
|
|
|
+import android.widget.FrameLayout;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.modular.apputils.R;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by Bitlike on 2018/5/3.
|
|
|
+ */
|
|
|
+
|
|
|
+public class SupportToolBarActivity extends AppCompatActivity {
|
|
|
+ private FrameLayout contentFl;
|
|
|
+ private Toolbar commonToolBar;
|
|
|
+ private TextView commonTitleTv;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ super.setContentView(R.layout.base_bar_layout);
|
|
|
+ contentFl = findViewById(R.id.contentFl);
|
|
|
+ if (needCommonToolBar()) {
|
|
|
+ initCommonToolbar();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void initCommonToolbar() {
|
|
|
+ ViewStub stub = findViewById(R.id.toolbarVs);
|
|
|
+ stub.inflate();
|
|
|
+ commonToolBar = findViewById(R.id.commonToolBar);
|
|
|
+ commonTitleTv = findViewById(R.id.commonTitleTv);
|
|
|
+ if (commonToolBar != null) {
|
|
|
+ setSupportActionBar(commonToolBar);
|
|
|
+ getSupportActionBar().setDisplayShowTitleEnabled(false);
|
|
|
+ }
|
|
|
+ if (needNavigation()) {
|
|
|
+ setNavigation(0, null,null);
|
|
|
+ }
|
|
|
+ commonTitleTv.setText(getTitle());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化导航键
|
|
|
+ *
|
|
|
+ * @param iconId 返回图标(优先)
|
|
|
+ * @param icon 返回图标(当iconId小于0时)
|
|
|
+ * @param onClickListener 导航键监听事件
|
|
|
+ */
|
|
|
+ public final void setNavigation(int iconId, Drawable icon, View.OnClickListener onClickListener) {
|
|
|
+ if (iconId > 0) {
|
|
|
+ commonToolBar.setNavigationIcon(iconId);
|
|
|
+ } else if (icon != null) {
|
|
|
+ commonToolBar.setNavigationIcon(icon);
|
|
|
+ } else {
|
|
|
+ commonToolBar.setNavigationIcon(R.drawable.ic_baseutil_back);
|
|
|
+ }
|
|
|
+ if (onClickListener == null) {
|
|
|
+ onClickListener = new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ onBackPressed();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ //设置返回按钮的点击事件
|
|
|
+ commonToolBar.setNavigationOnClickListener(onClickListener);
|
|
|
+ setToolBarMenuClickListener(null);
|
|
|
+ }
|
|
|
+
|
|
|
+ //是否需要返回键
|
|
|
+ public boolean needNavigation() {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ //是否需要通用的toolbar
|
|
|
+ public boolean needCommonToolBar() {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*隐藏toolbar*/
|
|
|
+ protected final void hideToolBar() {
|
|
|
+ if (commonToolBar != null) {
|
|
|
+ commonToolBar.setVisibility(View.GONE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*显示toolbar*/
|
|
|
+ public final void showToolBar() {
|
|
|
+ if (commonToolBar != null && commonToolBar.getVisibility() == View.GONE) {
|
|
|
+ commonToolBar.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*设置toolbar的点击监听器*/
|
|
|
+ public final void setToolBarMenuClickListener(Toolbar.OnMenuItemClickListener onclick) {
|
|
|
+ if (commonToolBar != null) {
|
|
|
+ if (onclick == null) {
|
|
|
+ onclick = new Toolbar.OnMenuItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public boolean onMenuItemClick(MenuItem item) {
|
|
|
+ onOptionsItemSelected(item);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ commonToolBar.setOnMenuItemClickListener(onclick);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*设置标题*/
|
|
|
+ public final void setTitle(CharSequence title) {
|
|
|
+ super.setTitle(title);
|
|
|
+ if (!TextUtils.isEmpty(title)) {
|
|
|
+ if (commonTitleTv != null) {
|
|
|
+ commonTitleTv.setText(title);
|
|
|
+ }
|
|
|
+ getSupportActionBar().setTitle(title);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更改为自定义的ToolBar,此时默认的Toobar将会制空
|
|
|
+ * TODO 存在问题:前面如果设置的返回键监听事件会失效
|
|
|
+ *
|
|
|
+ * @param toolBarId 当前布局里toolbar的资源id
|
|
|
+ * @return 返回新的Toobar
|
|
|
+ */
|
|
|
+ public final Toolbar updataToolBar(int toolBarId) {
|
|
|
+ Drawable navigationIcon = null;
|
|
|
+ if (commonToolBar != null) {
|
|
|
+ if (needNavigation()) {
|
|
|
+ navigationIcon = commonToolBar.getNavigationIcon();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ commonToolBar = contentFl.findViewById(toolBarId);
|
|
|
+ if (commonToolBar != null) {
|
|
|
+ setSupportActionBar(commonToolBar);
|
|
|
+ //设置actionBar的标题是否显示,对应ActionBar.DISPLAY_SHOW_TITLE。
|
|
|
+ getSupportActionBar().setDisplayShowTitleEnabled(false);
|
|
|
+ if (needNavigation()) {
|
|
|
+ setNavigation(0, navigationIcon, null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return commonToolBar;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|