我使用这个图书馆 FadingActionBar
这是我的风格:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/Widget.ActionBar</item>
<item name="actionBarStyle">@style/Widget.ActionBar</item>
</style>
<style name="AppTheme.TranslucentActionBar">
<item name="android:actionBarStyle">@style/Widget.ActionBar.Transparent</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="actionBarStyle">@style/Widget.ActionBar.Transparent</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
这是我的使用AppTheme.TranslucentActionBar作为主题的活动
public class MainActivity extends AppCompatActivity {
private ActionBar mActionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FadingActionBarHelper helper = new FadingActionBarHelper()
.actionBarBackground(R.drawable.ab_background)
.headerLayout(R.layout.header)
.contentLayout(R.layout.activity_scrollview);
setContentView(helper.createView(MainActivity.this));
helper.initActionBar(MainActivity.this);
}
}
我的确切错误是这样:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setBackgroundDrawable(android.graphics.drawable.Drawable)' on a null object reference
当我将AppCompatActivity转换为Activity并更改AppTheme样式时,例如:
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
我的问题已解决,但之后我想使用自定义操作栏并使用
getsupportActionBar
和
android.support.v7.widget.Toolbar
并且不能将主题与Activity一起使用。请告诉我为什么我的ActionBar为null并得到提及的错误。
此自定义FadingActionBarHelper解决了问题
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.example.fereshteh.aroosshahr.R;
import com.manuelpeinado.fadingactionbar.FadingActionBarHelperBase;
public class MyFadingActionBarHelper extends FadingActionBarHelperBase {
private ActionBar mActionBar;
@Override
protected int getActionBarHeight() {
return mActionBar.getHeight();
}
@Override
protected boolean isActionBarNull() {
return mActionBar == null;
}
@Override
protected void setActionBarBackgroundDrawable(Drawable drawable) {
mActionBar.setBackgroundDrawable(drawable);
}
@Override
public void initActionBar(Activity activity) {
mActionBar = ((AppCompatActivity) activity).getSupportActionBar();
mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
mActionBar.setDisplayShowCustomEnabled(true);
mActionBar.setCustomView(R.layout.toolbar_fading);
View view = mActionBar.getCustomView();
// toolbar_title = (MyTV) view.findViewById(R.id.toolbar_title);
super.initActionBar(activity);
}
}