Android セレクターで太字を定義するにはどうすればいいですか? 質問する

Android セレクターで太字を定義するにはどうすればいいですか? 質問する

私の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>

結果:

大胆な効果

太字効果なし

お役に立てれば。

おすすめ記事