如何在Android库中配置工具栏主题

时间:2017-08-17 03:25:43

标签: android android-theme android-library

我正在尝试在库模块中编写BaseToolBarActivity。 我想在app模块中使用灯光主题,但在工具栏上使用黑色主题然后我可以获得浅色文本颜色等等。 但是在库模块中使用BaseToolBarActivity时它不起作用。 像这样的代码

  public abstract class BaseToolBarActivity extends BaseActivity {
    private Toolbar mToolBar;
    private TextView mTextView;
    private RelativeLayout rootView;
    @Override
    protected final void initView() {
        setContentView(R.layout.activity_base_title);
        rootView = (RelativeLayout) findViewById(R.id.rl_rootView);
        mToolBar = (Toolbar)findViewById(R.id.tb_baseToolbar);
     mToolBar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
        mTextView = (TextView) findViewById(R.id.tv_baseTitle);
        mTextView.setText(getTitleBarText());
        View userView = LayoutInflater.from(this).inflate(getLayoutResource(), null);
        if (userView != null) {
            RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            layoutParams.addRule(RelativeLayout.BELOW, R.id.tb_baseToolbar);
            rootView.addView(userView, layoutParams);
            mUnBinder = ButterKnife.bind(this, userView);
        }
              setSupportActionBar(mToolBar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        StatusBarCompat.compat(this);
    }
    protected abstract String getTitleBarText();
    protected void enableBackIcon(boolean show) {
        if (show) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
                }
            });
        } else {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            mToolBar.setNavigationOnClickListener(null);
        }
    }
    protected void setTitleBarColor(@ColorInt int titleBarColor) {
        this.setTitleBarColor(titleBarColor, -1);
    }
 protected void setTitleBarText(String title) {
        mTextView.setText(title);
    }
    protected void setTitleBarColor(@ColorInt int titleBarColor, @ColorInt int statusBarColor) {
        mToolBar.setBackgroundColor(titleBarColor);
        StatusBarCompat.compat(this, statusBarColor);
    }
    protected void setTitleSize(float size) {
        mTextView.setTextSize(size);
    }
    protected Toolbar getToolbarInstance() {
        return mToolBar;
    }
    protected void setTitleTextColor(@ColorInt int titleBarColor) {
        mTextView.setTextColor(titleBarColor);
    }
}

我在xml

中确认了这种风格
 <android.support.v7.widget.Toolbar
        android:id="@+id/tb_baseToolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/AppTheme.Toolbar">
        <TextView
            android:id="@+id/tv_baseTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="#ffffff"
            android:textSize="18sp" />
    </android.support.v7.widget.Toolbar>


<style name="AppTheme.Toolbar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">?actionBarSize</item>
        <item name="android:textColorPrimaryInverse">@color/white</item>
        <item name="android:textColorPrimary">@color/white</item>
        <item name="android:actionMenuTextColor">@android:color/holo_green_light</item>
    </style>

但这不起作用!!!

我仍然在app模块中尝试相同的代码,并且它可以工作,我怎么能在libray中配置它。

0 个答案:

没有答案