第5章(6) 状态切换(Switch)和评级条(RatingBar)

分类:C#、Android、VS2015;

创建日期:2016-02-07

一、简介

1、利用Switch或者ToggleButton切换状态

如果只有两种状态,可以用ToggleButton控件或Switch控件切换这两种状态。如下图所示(左侧是ToggleButton的效果,右侧是从API 19开始增加的Switch的效果):

2、利用五角星评级条(RatingBar)设置评级

【NumStars】属性:定义星级的个数。

【StepSize】属性:定义每一颗星的粒度(值为 0.5 将允许半星级评级)。

【RatingBarChange】事件:星级发生变化时引发。

例如:

<RatingBar android:id="@+id/ratingbar"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:numStars="5"

android:stepSize="1.0"/>

二、示例6—Demo06SwitchAndRatingBar

1、运行效果:

2、添加demo06_SwitchAndRatingBar.axml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="@drawable/android_button" />
    <EditText
        android:id="@+id/edittext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <CheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="check it out" />
    <RadioGroup
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioButton
            android:id="@+id/radio_red"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Red" />
        <RadioButton
            android:id="@+id/radio_blue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Blue" />
    </RadioGroup>
    <Switch
        android:id="@+id/togglebutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="允许开启XX功能码?"
        android:checked="true" />
    <RatingBar
        android:id="@+id/ratingbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:stepSize="1.0" />
</LinearLayout>

3、添加Demo06SwitchAndRatingBar.cs文件

using System;
using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;

namespace ch05demos.SrcActivity
{
    [Activity(Label = "SwitchAndRatingBarDemo")]
    public class Demo06SwitchAndRatingBar : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.demo06_SwitchAndRatingBar);

            Button button = FindViewById<Button>(Resource.Id.button);
            button.Click += delegate
            {
                Toast.MakeText(this, "Beep Boop", ToastLength.Short).Show();
            };

            var editText = FindViewById<EditText>(Resource.Id.edittext);
            //---------------------------------------------------------
            //技巧:按+=后,连续按两次<Tab>键,就会自动生成事件处理程序
            //---------------------------------------------------------
            editText.KeyPress += EditText_KeyPress;

            var checkbox = FindViewById<CheckBox>(Resource.Id.checkbox);
            checkbox.Click += delegate
            {
                if (checkbox.Checked)
                    Toast.MakeText(this, "Selected", ToastLength.Short).Show();
                else
                    Toast.MakeText(this, "Not selected", ToastLength.Short).Show();
            };

            var radioRed = FindViewById<RadioButton>(Resource.Id.radio_red);
            var radioBlue = FindViewById<RadioButton>(Resource.Id.radio_blue);
            radioRed.Click += Radio_Click;
            radioBlue.Click += Radio_Click;

            Switch toggleButton = FindViewById<Switch>(Resource.Id.togglebutton);
            toggleButton.Click += (o, e) => {
                if (toggleButton.Checked)
                    Toast.MakeText(this, "Checked", ToastLength.Short).Show();
                else
                    Toast.MakeText(this, "Not checked", ToastLength.Short).Show();
            };

            RatingBar ratingbar = FindViewById<RatingBar>(Resource.Id.ratingbar);
            ratingbar.RatingBarChange += (o, e) => {
                Toast.MakeText(this, "New Rating: " + ratingbar.Rating.ToString(), ToastLength.Short).Show();
            };
        }

        private void EditText_KeyPress(object sender, View.KeyEventArgs e)
        {
            var editText = sender as EditText;
            e.Handled = false;
            if (e.Event.Action == KeyEventActions.Down && e.KeyCode == Keycode.Enter)
            {
                Toast.MakeText(this, editText.Text, ToastLength.Short).Show();
                e.Handled = true;
            }
        }

        private void Radio_Click(object sender, EventArgs e)
        {
            RadioButton r = sender as RadioButton;
            Toast.MakeText(this, r.Text, ToastLength.Short).Show();
        }
    }
}

运行观察效果。

时间: 2024-10-31 04:05:20

第5章(6) 状态切换(Switch)和评级条(RatingBar)的相关文章

[基础控件]---状态切换控件CompoundButton及其子类CheckBox、RadioButton、ToggleButton、switch事件监听与场景使用

一.事件监听 对于普通的Button,对其进行事件监听Google官方给出了常见的三种监听方式:1.对每一个button设置事件监听器button.setOnClickListener(View.OnclickListener  listener);此种方法当button按钮较多时代码显得多.乱.不够简洁明了. 2.在Activity中实现接口View.OnclickListener,然后重写void onClick(View v)方法,在方法中通过switch(v.getId())予以区分不同

UI--Android中的状态切换按钮自定义

<代码里的世界> -UI篇 用文字札记描绘自己 android学习之路 转载请保留出处 by Qiao http://blog.csdn.net/qiaoidea/article/details/46715453 1.概述 Android中关于控制开关和页面/状态切换的使用场景还是比较多的.源生做的支持也有比如RadioGroup 和Tabhost等.这里准备通过自定义View来模仿学习下IOS两种常见UI样式: SwitchButton 和 SegmentControl. 首先先通过简易的组

关于MFC共享DLL的模块状态切换 .

什么是模块状态? 在每个模块(EXE或DLL)中,都存在一种全局的状态数据,MFC依靠这种全局的状态数据来区分不同的模块,以执行正确的操作.这种数据包括:Windows实例句柄(用于加载资源),指向应用程序当前的CWinApp和CWinThread对象的指针,OLE模块引用计数,以及维护Windows对象句柄与相应的MFC对象实例之间连接的各种映射等.但当应用程序使用多个模块时,每个模块的状态数据不是应用程序范围的.相反,每个模块具有自已的MFC状态数据的私有副本.这种全局的状态数据就叫做MFC

Keepalived状态切换的条件和因素

一.Keepalived 应用场景 keepalived的研发是针对LVS的,特点是轻量级.配置简洁.正因为这个特点,个人认为其适合应用在资源相对少,且无共享存储的环境下,尤其适合在负载均衡器上使用,如LVS.haproxy.nginx等上,也可以用于轻量级的http环境,作为其高可用组件.当然理论上很多高可用的场景其都可以实现,不过基于keepalived本身的资源切换方式功能并不推荐使用. 二.影响keepalived状态切换的因素 keepalived状态切换主要通过其VRRP协议中的we

按钮插件和按钮状态切换

//按钮插件 1.data-loading-text="正在登录..."; //按钮单击后呈现不能点击,按钮颜色变浅并且(文字为="正在登录..."); //绑定事件(定时器) $("#id").button("loading"); window.setTimeout(function(){ $("#id").button("reset"); },2000) 2.data-complet

HttpClient4.3教程 第三章 Http状态管理

HttpClient4.3教程 第三章 Http状态管理 Posted on 2013 年 10 月 13 日 最初,Http被设计成一个无状态的,面向请求/响应的协议,所以它不能在逻辑相关的http请求/响应中保持状态会话.由于越来越多的系统使用http协议,其中包括http从来没有想支持的系统,比如电子商务系统.因此,http支持状态管理就很必要了. 当时的web客户端和服务器软件领先者,网景(netscape)公司,最先在他们的产品中支持http状态管理,并且制定了一些专有规范.后来,网景

HttpClient 4.3.6 教程 第3章 HTTP状态管理 【翻译】

转载:http://blog.csdn.net/lianghongge/article/details/42027069 第3章 HTTP状态管理 最初的HTTP被设计成以状态.请求/应答为导向的协议,它被制作成是没有特殊条款的,以便在状态会话中能交换逻辑关系请求/应答.HTTP协议越来越受欢迎和被采用,越来越多的系统会在应用程序里使用它,这是以前所没有想过的,例如电子商务应用程序.因此,对状态管理的支持就十分有必然了. (Netscape Communications)网景公司是当时web客户

Java(1):多线程内存模型和状态切换

线程的内存模型 32位操作系统的寻址空间为2的32次方,也就是4GB的寻址空间:系统在这4GB的空间里划分出1GB的空间给系统专用,称作内核空间,具有最高权限:剩下3GB的空间为用户空间(一般JVM的可用内存最大只能是2GB),只能访问当前线程划分的内存地址.用户线程需要访问硬件资源的时候需要委托内核线程进行访问,这就涉及到CPU上下文在用户模式和内核模式的切换.因此在使用线程或者进程的时候需要尽量避免不必要的用户模式和内核模式的切换. 进程是资源管理的最小单位,线程是CPU调度的最小单位.线程

Egret 中实现3种状态切换按钮

一.游戏中的常用3种状态按钮 Egret种提供了2种状态切换的按钮ToggleButton. 但是在游戏中常用到3种状态的按钮,比如任务系统的领取.已领取.未领取. 比如下图中宝箱的打开.浏览后打开.邀请后打开 二.利用eui.Button来实现3种状态切换按钮 测试用素材 继承eui.Button,并实现3种状态切换按钮 /** * 三种状态切换按钮 * @author chenkai 2018/8/8 */ class ThreeButton extends eui.Button{ publ