2017-03-16 55 views
0

我试图将自定义操作栏添加到自定义材质Android主题。setSupportActionBar自定义材质主题

问题是,为了使主题工作,我的MainActivity需要扩展Activity,并且setSupportActionBar方法需要MainActivity来扩展AppCompatActivity。

这里是我的MainActivity:

import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Toolbar; 
import android.view.Menu; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar myToolbar = (Toolbar) findViewById(R.id.myToolbar); 
    setSupportActionBar(myToolbar); 
} 

我ActivityMain.xml

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="start" 
    android:orientation="vertical"> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/myToolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="@color/ap_main_dark" 
     android:elevation="4dp" 
     android:theme="@style/ThemeOverlay.AppCompat.ActionBar" /> 
</LinearLayout> 

而我的风格

<style name="AjudarOPeixe" parent="android:Theme.Material.Light.NoActionBar" > 
    <item name="android:colorAccent">@color/ap_red</item> 
    <item name="android:navigationBarColor">@color/ap_main</item> 
    <item name="android:statusBarColor">@color/ap_main_dark</item> 
    <item name="android:colorPrimary">@android:color/background_light</item> 
    <item name="android:textColorPrimary">@android:color/background_dark</item> 
</style> 

回答

0

您需要使用程序兼容性主题:

<style name="AjudarOPeixe" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorAccent">@color/ap_red</item> 
    <item name="navigationBarColor">@color/ap_main</item> 
    <item name="statusBarColor">@color/ap_main_dark</item> 
    <item name="colorPrimary">@android:color/background_light</item> 
    <item name="textColorPrimary">@android:color/background_dark</item> 
</style> 

然后你就可以有MainActivity扩展AppCompatActivity:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar myToolbar = (Toolbar) findViewById(R.id.myToolbar); 
     setSupportActionBar(myToolbar); 
    } 
} 
+0

非常感谢!我担心使用AppCompat的所有材质设计将会消失,但显然资源仍然存在。 –