2015-03-31 106 views
1

//最近,我正在学习Google的Material Design。这太神奇了!我看到了Chris Banes's question,我跟着回复。这里是我的代码:方法setStatusBarBackgroundColor()未定义类型DrawerLayout

公共类MainActivity扩展活动{

Toolbar toolbar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setActionBar(toolbar); 
    DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
    drawerLayout.setStatusBarBackgroundColor(100, 100, 100); 

} 

}

//但这种方法 'setStatusBarBackgroundColor' 不能用,为什么?

//我的XML的一部分:

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawerLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".MainActivity" > 

<com.example.app.ScrimInsetsFrameLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/scrimInsetsFrameLayout" 
    android:layout_width="320dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@color/base" 
    android:elevation="10dp" 
    android:fitsSystemWindows="true" 
    app:insetForeground="#4000" /> 

//和样式:

<resources> 
<style name="AppBaseTheme" parent="android:Theme.Material.Light.NoActionBar"> 
</style> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:colorPrimary">@color/base</item> 
    <item name="android:colorPrimaryDark">@color/base</item> 
    <item name="android:statusBarColor">@android:color/transparent</item> 
    <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
</style> 

回答

0

但这种方法 'setStatusBarBackgroundColor' 不能用,为什么?

因为,你可以在documentation看到,setStatusBarBackgroundColor(int)需要代表色彩的单个int参数设置:

public void setStatusBarBackgroundColor (int color)

设置一个绘制中的插图中区画状态栏。请注意,只有在此DrawerLayout适合SystemWindows时才会激活此功能。

参数
颜色 - 颜色使用作为背景绘制在0xAARRGGBB格式的状态栏后面画。

但是,你想给它3个参数:

drawerLayout.setStatusBarBackgroundColor(100, 100, 100); 

假设那些RGB值你要设置,更改上面的线:

drawerLayout.setStatusBarBackgroundColor(android.graphics.Color.rgb(100, 100, 100)); 
+0

是的,你是对的,我纠正了它,但它仍然有错误的提示。 – linjiang 2015-03-31 12:51:49

+0

@freshMan:请定义“出错了”?即复制粘贴您的IDE给您的确切错误,或制作截图。 – 2015-03-31 15:29:21

+0

IDE给我的是上面的标题,除此之外,没有别的。这个问题困扰了我好几天。 – linjiang 2015-04-01 03:35:02

0

我已经从libs文件夹中删除了support-v4-18.0.0.jar并再次同步glade文件,然后我的问题得到修复。谢谢@freshMan。