安卓:从preferences选择主题颜色 [英] Android: Selecting theme color from preferences
问题描述
我要设置我的应用程序的抽屉式导航栏,通过preferences颜色pressed项目,但我似乎无法找到一个方法来做到这一点。我已经创造了我的preferences与十六进制颜色codeS作为值的列表,我不知道如何在我的Java类中使用的值。帮助!
I wish to set the color pressed item of navigation drawer of my app through preferences but I can't seem to find a way to do so. I have created a list in my preferences with hex color codes as values and I have no idea how to use the values in my java class. HELP!
推荐答案
试试这个方法:
首先定义新颜色colors.xml价值观是这样的:
Try this approach: First define your new colors in colors.xml in values like this:
<color name="my_blue">#4FC3F7</color>
<color name="my_yellow">#FDD835</color>
然后,像这样定义(my_theme.xml)一个新的主题:
Then, you define a new theme like this (my_theme.xml):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyRandomTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/my_blue</item>
<item name="colorPrimaryDark">@color/my_blue</item>
<item name="android:navigationBarColor">@color/my_blue</item>
</style>
</resources>
然后,看看我是如何动态地改变颜色:
Then, look at how I change the color dynamically:
我的布局:
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Blue"
android:id="@+id/btnBlue"
android:layout_below="@+id/imageView"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView"
android:background="#162c69" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Yellow"
android:id="@+id/btnYellow"
android:layout_below="@+id/imageView"
android:layout_alignRight="@+id/imageView"
android:layout_alignEnd="@+id/imageView"
android:background="#9b8a09" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mix"
android:id="@+id/btnMix"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true"
android:background="#920f08" />
我的活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setTheme(R.style.MyRandomTheme);
setContentView(R.layout.activity_main);
//Change theme to yellow
Button yellowButton = (Button) findViewById(R.id.btnYellow);
yellowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.my_yellow));
getWindow().setStatusBarColor(getResources().getColor(R.color.my_yellow));
}
}
});
//Change theme to blue
Button blueButton = (Button) findViewById(R.id.btnBlue);
blueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.my_blue));
getWindow().setStatusBarColor(getResources().getColor(R.color.my_blue));
}
}
});
//Change theme to mixture of blue and yellow
Button mixButton = (Button) findViewById(R.id.btnMix);
mixButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.my_blue));
getWindow().setStatusBarColor(getResources().getColor(R.color.my_yellow));
}
}
});
}
结果:
也从preferences读取和写入preferences试试这个:
Also for reading from preferences and writing to preferences try this:
//Write to preferences
String s = "this is a test.";
SharedPreferences prefs = this.getSharedPreferences("MyPrefs",this.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("A", s);
editor.apply();
//Fetch from preferences
SharedPreferences prefs2 = this.getSharedPreferences("MyPrefs", this.MODE_PRIVATE);
if(prefs2 != null) {
String text2 = prefs.getString("A","");
Log.d(LOG_TAG, "This is the string: "+text2);
}
您可以通过您的参数,如R.color.my_yellow,并在你的preferences直到用户更改。我希望它能帮助。让我知道如果你有任何问题。
You can pass your parameters like "R.color.my_yellow" and have it in your preferences till your user change it. I hope it helps. Let me know if you have any question.
这篇关于安卓:从preferences选择主题颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!