状态栏的颜色不会随着 Theme.AppCompat.Light 而改变
Status bar's color don't change with Theme.AppCompat.Light
我正在尝试在我的应用程序中使用 Material 设计,并使用浮动操作按钮,我正在使用 appcompat-v7 库。但是,为了使用它,我必须使用主题:"Theme.AppCompat.Light"。而且我无法在应用程序上为 API 22 设置背景颜色。我没兴趣在 API 的 20 或以下
上进行这项工作
在 Android 文档中,它说我只需要在 android:Theme.Material 上使用 colorPrimary 和 colorPrimaryDark
https://developer.android.com/intl/pt-br/training/material/theme.html
我的风格是这样的:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:statusBarColor">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="android:colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
</resources>
我的主要活动:
package com.example.rafael.encomendasmaterial.activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.example.rafael.encomendasmaterial.R;
public class MainActivity extends ActionBarActivity {
private FloatingActionButton myFAB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myFAB = (FloatingActionButton) findViewById(R.id.myFAB);
setTheme(R.style.AppTheme);
callCadastroEncoemnda();
}
public void callCadastroEncoemnda(){
myFAB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CadastroEncomenda.class);
MainActivity.this.startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
由于您使用的是支持库,API 7 中不存在的某些属性不应 android 命名空间,因为它们是由库提供的。
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
</resources>
我忘记在 colorPrimary、colorPrimaryDark 和 colorAccent 之前加上 "android:"。它现在工作了!谢谢
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="android:colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
在我的例子中,状态栏没有反映,因为我设置了
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
删除线解决了它
我正在尝试在我的应用程序中使用 Material 设计,并使用浮动操作按钮,我正在使用 appcompat-v7 库。但是,为了使用它,我必须使用主题:"Theme.AppCompat.Light"。而且我无法在应用程序上为 API 22 设置背景颜色。我没兴趣在 API 的 20 或以下
上进行这项工作在 Android 文档中,它说我只需要在 android:Theme.Material 上使用 colorPrimary 和 colorPrimaryDark https://developer.android.com/intl/pt-br/training/material/theme.html
我的风格是这样的:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:statusBarColor">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="android:colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
</resources>
我的主要活动:
package com.example.rafael.encomendasmaterial.activities;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.example.rafael.encomendasmaterial.R;
public class MainActivity extends ActionBarActivity {
private FloatingActionButton myFAB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myFAB = (FloatingActionButton) findViewById(R.id.myFAB);
setTheme(R.style.AppTheme);
callCadastroEncoemnda();
}
public void callCadastroEncoemnda(){
myFAB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CadastroEncomenda.class);
MainActivity.this.startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
由于您使用的是支持库,API 7 中不存在的某些属性不应 android 命名空间,因为它们是由库提供的。
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
</resources>
我忘记在 colorPrimary、colorPrimaryDark 和 colorAccent 之前加上 "android:"。它现在工作了!谢谢
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
<item name="android:colorAccent">@color/accent</item>
<item name="android:textColor">@color/textColor</item>
</style>
在我的例子中,状态栏没有反映,因为我设置了
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
删除线解决了它