gpt4 book ai didi

java - 如何在 Android 选择器中定义粗体?

转载 作者:IT老高 更新时间:2023-10-28 23:24:33 26 4
gpt4 key购买 nike

在我的 Android 应用程序中,我有几个单选按钮,它们应该具有不同的颜色并在选择时变为粗体。我设法通过在 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 属性。

有人知道我怎样才能将选中的单选按钮变为粗体吗?

==编辑==我的 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>

最佳答案

样式没有选择器:使用一个会破坏构建/运行时,或者没有效果并被忽略。只有两种类型的选择器:颜色和可绘制对象。

因此,只有一个选择:动态应用粗体样式,可能通过监听检查状态变化。

=== 示例 ===

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”更改了您在问题中使用的颜色(它们非常微弱)]: p>

<?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>

结果:

with bold effect

without bold effect

希望这会有所帮助。

关于java - 如何在 Android 选择器中定义粗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com