私のAndroidアプリには、選択時に異なる色になり太字になるラジオボタンがいくつかあります。異なる色にするには、ラジオピックカラー.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"
今度は、テキストを太字にするために同じことをしたいので、別のファイルを作成しました。ラジオピッカースタイル.xml私は次のようにスタイルを定義したかったのです:
<item android:state_checked="true"
android:style="bold" />
残念ながら、Eclipse は、パッケージ 'android' 内の属性 'style' のリソース識別子が見つからないというエラーを報告します。android:textStyle でも試しましたが、セレクター項目内から属性がわかりませんandroid:textStyle
。
選択したラジオ ボタンを太字にする方法を知っている人はいますか?
==編集== 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>
そしてそのラジオピッカースタイル.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>
ベストアンサー1
スタイルにはセレクターがありません。セレクターを使用すると、ビルド/ランタイムが壊れるか、効果がなく無視されます。セレクターは、色用と描画可能用の 2 種類のみです。
したがって、オプションは 1 つしかありません。チェック状態の変更をリッスンして、その場で太字スタイルを適用することです。
=== 例 ===
メインアクティビティ.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);
}
}
レイアウト/アクティビティメイン.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>
描画可能/ラジオピッカーカラー.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>
結果:
お役に立てれば。