2015-11-15 65 views
3

任何人都可以請解釋一下我,爲什麼我的工具欄不會改變,即使我創造了另一種風格就像它的顏色的顏色:無法更改的工具欄

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">false</item> 
</style> 

增加它在我喜歡的清單文件:

<activity 
    android:name=".SettingsActivity" 
    android:label="@string/title_activity_settings" 
    android:parentActivityName=".MainActivity"> 
    <meta-data 
     android:theme="@style/AppTheme.NoActionBar" 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.com.com.com.MainActivity" /> 
</activity> 

,並嘗試改變工具欄,如:

Toolbar toolbar = new Toolbar(this); 
toolbar.setBackgroundColor(getResources().getColor(R.color.light_blue)); 
setSupportActionBar(toolbar); 

但仍獲得

此活動已經有一個窗口裝飾提供的操作欄。 請勿在您的主題中請求Window.FEATURE_ACTION_BAR並將windowActionBar設置爲 false以代替使用工具欄。

我甚至試圖getSupportActionBar().hide();,但仍然無法正常工作。

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context="com.com.com.com.SettingsActivity" 
    android:id="@+id/settings_activity"> 
</RelativeLayout> 

基本上,我要的是讓我的全球主題,只是改變工具欄顏色的活動之一。這就是爲什麼我不在xml文件中創建工具欄,我以編程方式創建它,添加背景顏色並且想要設置它。

+1

的主題並不在''去。它在''開頭。標籤。 –

+0

你可以發佈你想要改變的工具欄元素的XML文件嗎? – AntCopp

+0

我想,你首先需要添加'工具欄'。 'rootElement.add(欄)'。比將其設置爲'setSupportActionBar'。 –

回答

4

你需要脫掉android:theme="@style/AppTheme.NoActionBar"meta-data標籤外:

<activity 
     android:name=".SettingsActivity" 
     android:label="@string/title_activity_settings" 
     android:theme="@style/AppTheme.NoActionBar" 
     android:parentActivityName=".MainActivity"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="net.noorr.menote.menote.MainActivity" /> 
    </activity> 

而且在Java代碼:

Toolbar toolbar = (Toolbar) findViewById(R.id.yourToolbarId); 
toolbar.setBackgroundColor(getResources().getColor(R.color.light_blue)); 
setSupportActionBar(toolbar); 
+0

我不想改變我的整個應用程序主題。我只想更改一個活動 – Elnoor

+0

檢查我的更新。 –

+0

我這樣做,但發生的事情是一個白色的空白屏幕 – Elnoor

0

我認爲你得到你的工具欄上的錯誤的方式。你可能不會擴展Toolbar類。 嘗試直接通過在xml文件中定義的id來獲取它。

Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar); 

然後,您可以將其設置爲支持並最終設置您的顏色。

編輯: 沒有看到您以編程方式創建它。 嘗試設置一個簡單的AppTheme風格像

<style name="NoToolbarStyle" parent="Theme.AppCompat.Light"> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
+0

嗯,我覺得沒什麼,因爲我不findViewById,創建新的工具欄 – Elnoor

+0

@Elnoor檢查編輯請 – Matteo

+0

還是一樣的,這是行不通的 – Elnoor

0

希望下面的代碼可以幫助你......

在您的樣式創建主題。XML如下:

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
</style> 

確保你在你的gradle這個依賴有這樣的

compile "com.android.support:appcompat-v7:21.0.+" 

在你的佈局XML文件中添加此工具欄標籤

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:background="#2196F3" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
</android.support.v7.widget.Toolbar> 

在您的清單文件中添加主題您創建的acctivity

<activity 
     android:name="com.javatechig.sample.MyActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

最後,這裏是你的活動

import android.support.v7.app.ActionBarActivity; 
import android.support.v7.widget.Toolbar; 

public class MyActivity extends AppCompatActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    // Set a toolbar to replace the action bar. 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
} 
} 
+0

感謝了很多,但它不工作。而ActionBarActivity已棄用 – Elnoor

+0

@Elnoor你的意思是什麼都行不通。它是否崩潰或工具欄不顯示? – ik024

+0

@Ennoor除了ActionBarActivity,你也可以使用AppCompatActivity,也編輯了ans。請參考http://javatechig.com/android/android-lollipop-toolbar-example爲教育部的解釋似乎 – ik024

0

這可以幫助你。

這裏的styles.xml包含自定義主題。

<resources> 

<style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style> 

<style name="AppTheme" parent="AppBaseTheme"></style> 

<style name="CustomTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 


AndroidManifest.xml包含SettingActivity

<activity 
    android:name=".SettingActivity" 
    android:label="@string/title_activity_setting" 
    android:theme="@style/CustomTheme" > 
</activity> 


Layout文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/settingRootLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.demo.SettingActivity" > 

</RelativeLayout> 


0的自定義主題最後你的活動文件

package com.example.demo; 

import android.annotation.SuppressLint; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.ViewGroup; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.RelativeLayout; 

@SuppressLint("NewApi") 
public class SettingActivity extends AppCompatActivity { 

    private RelativeLayout rootLayout; 
    private Toolbar mToolbar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_setting); 
     rootLayout = (RelativeLayout) findViewById(R.id.settingRootLayout); 
     mToolbar = new Toolbar(this); 
     mToolbar.setLayoutParams(
       new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     mToolbar.setBackgroundColor(getResources().getColor(R.color.light_blue)); 
     mToolbar.setFitsSystemWindows(true); 
     rootLayout.addView(mToolbar); 
     setSupportActionBar(mToolbar); 
    } 

} 
+0

仍然沒有奏效@ Ka7Im1011。我收到白色通知區域。 – Elnoor