特定单选按钮 - 为第一个/最后一个按钮设置不同样式的最简单方法
我想在我的布局中实现这种特定类型的单选按钮:
= 第一项的不同图形、中间的和最后一个,它们具有不同的圆角。我可以想象对 3 种类型的按钮使用不同的样式(使用自定义样式、有状态的可绘制对象)。
我正在使用自定义切换按钮来实现此功能。我想利用可绘制选择器为第一个和最后一个项目使用不同的可绘制对象,因此我使用:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_first="true"
android:drawable="@drawable/radio_left_act"/>
<item android:state_checked="true" android:state_last="true"
android:drawable="@drawable/radio_right_act"/>
<item android:state_checked="true"
android:drawable="@drawable/radio_middle_act"/>
<item android:state_checked="false" android:state_first="true"
android:drawable="@drawable/radio_left_inact"/>
<item android:state_checked="false" android:state_last="true"
android:drawable="@drawable/radio_right_inact"/>
<item android:state_checked="false"
android:drawable="@drawable/radio_middle_inact"/>
</selector>
但现在我遇到了一个问题,即 state_first
、state_last
在我的 LinearLayout 中不会自动设置,因此每次单击按钮时我都必须手动设置它们。是否有某种方式、某种布局可以自动设置这些状态?感谢您的帮助。
I would like to achieve this specific type of radio buttons in my layout:
= different graphics for the first item, middle ones, and last one, which have different rounded corners. I can imagine doing this with different styles for the 3 types of buttons (using custom styles, stateful drawables).
I'm implementing this using custom toggle buttons. I would like to take advantage of drawable selector for using different drawables for the first and the last items, so I use:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_first="true"
android:drawable="@drawable/radio_left_act"/>
<item android:state_checked="true" android:state_last="true"
android:drawable="@drawable/radio_right_act"/>
<item android:state_checked="true"
android:drawable="@drawable/radio_middle_act"/>
<item android:state_checked="false" android:state_first="true"
android:drawable="@drawable/radio_left_inact"/>
<item android:state_checked="false" android:state_last="true"
android:drawable="@drawable/radio_right_inact"/>
<item android:state_checked="false"
android:drawable="@drawable/radio_middle_inact"/>
</selector>
But now I have a problem, that states state_first
, state_last
are not set automatically in my LinearLayout
, so I have to set them manually every time the buttons are clicked. Is there some way, some layout, where these states are set automatically? Thank you for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
没有发现什么特别的,所以这是一个“默认”解决方案,带有自定义切换按钮。以下是第一个、中间按钮和最后一个按钮的 3 种不同样式(放入
styles.xml
):以及用于处理切换按钮事件的活动的简短代码,因此同一按钮中仅检查 1 个按钮时间,并且选中按钮被禁用:
也许它对某人有用......
Found nothing special, so here is a "default" solution, with custom toggle buttons. Here are 3 different styles (put to
styles.xml
) for first, middle ones and last buttons:And a short code for activity handling the events of toggle buttons, so only 1 button is checked in the same time, and checked button is disabled:
Maybe it can be usefull for somebody...
您应该查看 WordPress Android 项目。他们使用提供类似功能的“ToggleButton”。对于 .xml,请查看此处。要下载完整的源代码,请访问此处。
它不会与您想要的相同,因为它们只有切换按钮,但这很可能适合您所需的单选按钮样式(如果尚未内置)。
Wordpress Android 项目帮助我学到了很多东西。从主题、自定义按钮、自定义布局、切换按钮、xmlrpc 等一切内容。
You should check out the Wordpress Android project. They use a "ToggleButton" that gives similar functionality. For the .xml look here. To download the complete source go here.
It wont be the same as what you want, as they just have toggle buttons, but that can most likely be adapted for your needed style of radio buttons (if it's not already built in).
The Wordpress Android project helped me learn a lot. Everything from theming, custom buttons, custom layouts, toggle buttons, xmlrpc, and more.
我发现执行此操作的最简单方法是:
1)扩展 RadioButton 类,如下所示:
2)创建一个“res/drawable/rbtn_selector.xml”中的 XML 文件添加以下单选按钮背景的 XML 代码。
3) 在“res/drawable/rbtn_textcolor_selector.xml”中创建一个 XML 文件,为单选按钮文本选择器颜色添加以下 XML 代码。(文本颜色选择器 xml 文件)
4) 设置按钮的样式:
4.1) 以编程方式添加一些 RoundedButton 到一个现有的 RadioGroup:
4.2)Xml:
5)选择您自己的颜色和尺寸,我在示例中使用的是:
和:
The simplest way I found for doing this is:
1) Extend RadioButton class as follows:
2) Create One XML file in "res/drawable/rbtn_selector.xml" add below XML code for Radio Button background.
3) Create One XML file in "res/drawable/rbtn_textcolor_selector.xml" add below XML code for Radio Buttons Text selector color.(Text Color Selector xml file)
4) Set your style to the button:
4.1) Programmatically add some RoundedButton to an exixsting RadioGroup:
4.2) Xml:
5) Choose your own colors and dimensions the one I used in the example are:
and: