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

2024-03-18

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

And the radio_picker_style.xml我尝试将其放入可绘制文件夹中,但显示“属性缺少 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);
    }
}

layout/活动_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>

可绘制/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>

Result:

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 选择器中定义粗体? 的相关文章

随机推荐

  • android studio 重建错误:无法找到要构建的 Gradle 任务,为什么?

    i have an android studio project with manifest file the problem is when i sync the gradle it gives the error below Gradl
  • C++ - 全局静态对象和局部静态对象的构造函数调用不同吗?

    这里有一个同样的问题 静态局部对象的构造函数到底什么时候被调用 https stackoverflow com questions 3063027 when exactly is constructor of static local ob
  • Nuxt 生成动态路由路径

    我正在使用 wp api 创建一个网站 我的所有页面都在里面 pages slug 如果我的页面 slug 是 site com about pages about Nuxt将生成这样的html 但是 如果我的路径是 site com co
  • 8.4 中的 tcl 8.6 封装

    在 Tcl Tk 8 6 中有一个称为笔记本的 Ttk 功能 我想将其实现到我的程序中 但是 我需要该包才能利用此功能 我必须使用 8 4 因为我们使用的 dll 之一仅与 8 4 版本兼容 我感到沮丧的根源 我已经下载了 Tcl 8 6
  • url 中的空手道框架符号编码

    我有这个 Background url http localhost 15672 api exchanges 2F my exchange Scenario Given path publish 这里的问题是 url 被解析为 http l
  • HikariCP:为 Oracle 11g 设置 maxLifetime 时应考虑哪些数据库级别超时

    在 HikariCP 的文档中提到 我们强烈建议设置此值 并且它应该比任何数据库级连接超时至少少 30 秒 Oracle 11g 2 数据库应考虑哪些数据库级连接超时 我怎样才能找到这些超时 要执行的查询 简短回答 无 默认情况下 作为记录
  • 如何在 C++ 中从指向向量的指针访问向量的内容?

    我有一个指向向量的指针 现在 如何通过指针读取向量的内容 解决方案有很多 我总结了一些 int main int nArgs char vArgs vector
  • Chrome 扩展 API webRequest 不能很好地响应

    所以我正在尝试 Chrome API webRequest 根据要求 一切正常 但在响应时 我遇到了问题 我的测试非常简单 function func obj var resHeaders obj responseHeaders for v
  • 如何删除 MongoDB 中的此弃用警告以及为什么会发生这种情况?

    我只是想创建一个 API 并在 app js 文件中连接到它 但每次运行 app js 时都会收到此弃用警告 我已经检查了 mongoose 和 MongoDB 中的所有弃用警告 但我找不到任何与我的相匹配的警告 我收到的警告是 node
  • 将对象列表中的对象项替换为另一个项

    我的变量中有一个项目对象this rows 有一个来自服务器的实时项目与里面的项目相同this rows对象集合 如何用新值替换项目 这是一个例子 let rows id 11 active no id 22 active yes id 3
  • FirebaseCrashlytics:设置请求失败

    我几乎完成了 Android 应用程序的构建 但我想添加 Firebase Crashlytics 我总是添加这个并且安装它从来没有遇到过问题 但现在不同了 我收到以下错误 2021 05 24 20 41 42 807 11296 113
  • Ubuntu 16.10 x64 上的 Laravel 5.3 的 Cron 作业

    我正在运行 Digital Ocean 的 Ubuntu 16 10 x64 并在服务器上部署了 php Framework Laravel 5 3 28 在大多数情况下 一切都正常工作 但是我试图让 crontab 调用 artisan
  • Hudson 经验 - 构建矩阵项目

    有人尝试过该功能并有一些反馈吗 或者有人知道一些有用的示例来查找吗 几个月前我尝试过这个功能 但我不再使用它 只是因为我不需要它 而不是因为它不是一个好功能 基本上 您定义 n 个轴 每个轴都是一个具有多个值的属性 让我们举个例子 您定义了
  • 是否可以使用 AJAX 将图像文件上传到 Domino 服务器?

    是否可以使用 AJAX 将图像文件上传到 Domino 服务器 我正在尝试从 Android 手机上传照片 我可以将图像数据发送回 Domino 中的富文本字段 但我不知道如何将其渲染为多米诺表单上的图像 理想情况下 我想通过 ajax 发
  • 公共记录类型的构造函数?

    假设我想要一个记录类型 例如 type CounterValues Values int list IsCorrupt bool 问题是 我想创建一个构造函数 将传递的整数列表转换为一个没有负值的新列表 它们将被 0 替换 并且仅当在构造时
  • 无法将 NULL 值插入 AspNetUsers 表“Discriminator”列

    代码首次迁移后 使用寄存器添加用户失败 并显示 无法将 NULL 值插入表 aspnet BSF2013 20130918101120 dbo AspNetUsers 列 Discriminator 列不允许为空 创建用户代码是项目模板生成
  • 如何在计时器到期时关闭 InfoBox.Popup?

    我在 Outlook 2013 中从其他帖子中拼凑出了这个测试过程 它应该显示一个弹出框 然后在 3 秒后关闭 它永远不会关闭 Sub MessageBoxTimer Dim AckTime As Integer InfoBox As Ob
  • JLabel 超链接可在正确的 URL 处打开浏览器

    我需要使用 Java Swing 创建一个可单击的标签 并且能够打开桌面上的默认浏览器并将其重定向到特定的 url 我的代码能够打开浏览器 但无法将其重定向到正确的网址 加载默认主页 我的测试代码 import java awt impor
  • Node.js 用户名和密码认证

    我目前正在使用构建一个网络应用程序Node js and Express js 我正在寻找一种方法 在我的主目录中使用用户名和密码进行简单的服务器端身份验证app js正在监听的文件post请求于http www domain com lo
  • 如何在 Android 选择器中定义粗体?

    在我的 Android 应用程序中 我有几个单选按钮 它们应该具有不同的颜色并在选择时变为粗体 我设法通过定义来获得不同的颜色radio pick color xml可绘制文件