在我的Android应用程序中,我有几个radion按钮,应该有不同的颜色,并在选择时变得大胆。我设法通过在drawable中定义 radio_pick_color.xml 文件来获得不同的颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- checked -->
<item android:state_checked="true"
android:color="#00FF15" />
<!-- default -->
<item android:color="#4000FF" />
</selector>
并在我的main.xml文件中引用此文件:
android:textColor="@drawable/radio_picker_color"
我现在想要将文本设为粗体。所以我创建了另一个名为 radio_picker_style.xml 的文件,其中我想要定义这样的样式:
<item android:state_checked="true"
android:style="bold" />
不幸的是eclipse抱怨在'android'包中找不到属性'style'的资源标识符。我也尝试过android:textStyle,但是从选择器项中它也不知道android:textStyle
属性。
有人知道如何以粗体显示所选的单选按钮吗?
== EDIT == 我的main.xml文件的相关部分:
<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/option_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/option_1"
android:textColor="@drawable/radio_picker_color"
/>
<RadioButton
android:id="@+id/option_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/option_2"
android:textColor="@drawable/radio_picker_color"
/>
</RadioGroup>
我尝试将 radio_picker_style.xml 放入drawable文件夹中,但其中显示“属性缺少Android命名空间前缀”:
<?xml version="1.0" encoding="utf-8"?>
<style name="mystyle">
<item name="android:textColor">#ffffff</item>
<item name="android:textStyle">bold</item>
</style>
答案 0 :(得分:17)
该样式没有选择器:使用一个将破坏构建/运行时或将无效并被忽略。只有两种类型的选择器:用于颜色和用于绘图。
因此,只有一个选项:可以通过监听状态变化来动态应用粗体样式。
===示例===
<强> MainActivity.java 强>:
package com.example.radiobuttontest;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Typeface;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class MainActivity extends Activity implements CompoundButton.OnCheckedChangeListener {
private RadioGroup mGroup2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGroup2 = (RadioGroup)findViewById(R.id.radioGroup2);
RadioButton button1 = (RadioButton)findViewById(R.id.option_1);
button1.setOnCheckedChangeListener(this);
}
@Override
protected void onResume() {
super.onResume();
RadioButton checked = (RadioButton)findViewById(mGroup2.getCheckedRadioButtonId());
checked.setTypeface(Typeface.DEFAULT_BOLD);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
buttonView.setTypeface(isChecked ? Typeface.DEFAULT_BOLD : Typeface.DEFAULT);
}
}
布局/的 activity_main.xml中强>:
<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/radioGroup2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/option_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/option_1"
android:textColor="@drawable/radio_picker_color" />
<RadioButton
android:id="@+id/option_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/option_2"
android:textColor="@drawable/radio_picker_color" />
</RadioGroup>
drawable / radio_picker_color.xml [我为了演示目的而在“#0099CC”的问题中更改了您使用过的颜色(它们非常微弱):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- checked -->
<item android:state_checked="true"
android:color="#0099CC" />
<!-- default -->
<item android:color="#0099CC" />
</selector>
<强>结果强>:
希望这有帮助。
答案 1 :(得分:-2)
你可以做这样的事情
创建自己的风格,例如mystyle.xml
<style name="mystyle">
<item name="android:textColor">#ffffff</item>
<item name="android:textStyle">bold</item>
</style>
现在在你的选择器中调用它
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_checked="true"
style="@style/mystyle" />
</selector>
答案 2 :(得分:-4)
使用
android:textStyle = "bold"