更多控件

这些控件是基础,这一次可能讲不完,但是尽量多看一些,了解到这些控件,后面写小项目的时候,在慢慢熟练。

(我还是区分控件和组件的、组件是需要在AndroidManifest.xml中注册的并且目前为止只有4大组件,控件是需要布局的)

说5个:

AutoCompleteTextView  /  MultiAutoCompleteTextView / ToggleButton / CheckBox / RadioGroupRadioButton

1.  AutoCompleteTextView   自动补全文本框

(动态匹配输入的内容,就像Google搜索时,可以根据数据动态匹配热词一样)

该控件的一个独特属性: android:completionThreshold=”2” ----输入几个字符时自动匹配

动手演示一下:

建立一个名为“UI控件2”的工程。

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <AutoCompleteTextView
        android:id="@+id/autoCompleteTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:hint="请输入您要搜索的关键词"
        android:completionThreshold="2"/>

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    private AutoCompleteTextView acTextView = null;
    private String[] res={"shanghai1","shanghai2","shanghai3","shenzhen"};
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //1.初始化控件
        acTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
        //2.适配器和数据源绑定
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,res);
        //3.适配器和控件绑定(给控件设置适配器)
        acTextView.setAdapter(adapter);
    }
}

补充:

android.widget.ArrayAdapter.ArrayAdapter<String>(Context context, int resource, String[] objects)

Parameters:

context The current context.

resource The resource ID for a layout file containing a TextView to use when instantiating views.

objects The objects to represent in the ListView.

2.  MultiAutoCompleteTextView  多重自动补全文本框

(同一文本框,多次输入,多次补全,自动匹配;比如说群发邮件、群发短信自动提示)

特别的属性:

android:completionThreshold=”2”  ---设置输入多少字符时自动匹配

multiAutoCompleteTextView实例 . setTokenizer(new MultiAutoCompletionTextView.CommaTokenizer() );  ---设置多次输入的分隔符

布局和Java代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <MultiAutoCompleteTextView
        android:id="@+id/mt1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:hint="请输入您要搜索的关键词"
        android:completionThreshold="3"/>

</RelativeLayout>
public class MainActivity extends Activity {

    private MultiAutoCompleteTextView macTextView = null;
    private String[] res={"shanghai1","shanghai2","shanghai3","shenzhen"};
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //1.初始化控件
        macTextView = (MultiAutoCompleteTextView) findViewById(R.id.mt1);
        //2.适配器和数据源绑定
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,res);
        //3.适配器和控件绑定(给控件设置适配器)
        macTextView.setAdapter(adapter);
        //4.设置分隔符
        macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    }
}

3. ToggleButton (开关按钮)    [‘t?g(?)l]

状态改变时,做相应的变化。

ToggleButton有两种状态,选中和未选中,需要为不同的状态设置不同的变化。

特殊属性:

android:checked=”true”----默认控件是否选中

android:textOff=”开” ---当状态时未选中的时候显示的文本

android:textOn=”关” ---当状态时选中的时候显示的文本

示例:

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ToggleButton
        android:id="@+id/toggleButton1"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:textOff="开"
        android:textOn="关"
        android:checked="false"/>

    <ImageView
        android:id="@+id/img1"
         android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/toggleButton1"
        android:background="#ffffff"
        />
</RelativeLayout>

去加一副图片:

类文件

public class MainActivity extends Activity implements OnCheckedChangeListener
{

    private ToggleButton toggleBtn;
    private ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toggleBtn = (ToggleButton) findViewById(R.id.toggleButton1);
        image = (ImageView) findViewById(R.id.img1);

        toggleBtn.setOnCheckedChangeListener(this); //监听的事件不一样了
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        toggleBtn.setChecked(isChecked);  //isChecked是当前状态

        Log.i("tag", "当前状态时:"+isChecked);
        image.setBackgroundResource(isChecked?R.drawable.ic_launcher:R.drawable.a);

    }
}

效果如下:

一开始没有选中,所以显示“开”

点击后,状态变成选中,出现机器人

再点击关,又变成未选中,变成暗夜

基本就是这个意思。

总结起来就是这个button的文字比较特殊,监听的事件是OnCheckedChangeListener();

4. CheckBox (复选框,多选框)

示例:

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <CheckBox
        android:id="@+id/cb1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跑步"
        android:checked="false"
        />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity implements OnCheckedChangeListener
{
    private CheckBox cb;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        cb = (CheckBox) findViewById(R.id.cb1);
        cb.setOnCheckedChangeListener(this);
    }
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if(isChecked)
        {
            String msg = cb.getText().toString();
            Log.i("tag", msg);
        }
        else
        {
            Log.i("tag", "请选择您的爱好");
        }
    }
}

5. RadioGroup 和RadioButton  (单选框)(联合使用)

RadioGroup是一个Button集合,提供多选一机制;属性 android: orientation=”vertical”或者horizontal。

示例:

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

   <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="0" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1" />
    </RadioGroup>

</RelativeLayout>

注意import

android.widget.RadioGroup.OnCheckedChangeListener;

MainActivity.java

public class MainActivity extends Activity implements OnCheckedChangeListener
{
    private RadioGroup rg;
    //private RadioButton rb0;
    //private RadioButton rb1;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rg = (RadioGroup) findViewById(R.id.radioGroup1);
        //rb0 = (RadioButton) findViewById(R.id.radio0);
        //rb1 = (RadioButton) findViewById(R.id.radio1);

        rg.setOnCheckedChangeListener(this);
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId)
    {
        switch (checkedId) {
        case R.id.radio0:
            Log.i("tag", "您当先选的是0");
            break;
        case R.id.radio1:
            Log.i("tag", "您当先选的是1");
            break;

        default:
            break;
        }
    }
}

RadioGroup中的RadioButton状态改变既可以通过RadioButton来监听,也可以通过RadioGroup来监听。

时间: 2024-10-17 20:12:48

更多控件的相关文章

VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)

http://www.jizhuomi.com/software/255.html 上一节中鸡啄米讲了为Ribbon Bar添加控件的方法.本节教程鸡啄米将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数. 一.为Ribbon Bar添加更多Ribbon控件 鸡啄米将在上一节实例的基础上,继续添加下拉菜单.Check Box.Combo Box等Ribbon控件. 1.首先把“Small Button”面板上的“Click”按钮改造成一个下拉菜单.“Click”按

javascript-- 基于jQuery的模仿移动端上拉加载更多控件

简单实现手机端上拉加载更多,通过触发trigger()事件,触发原先已经写好的请求 css样式 .more{ padding: 10px 10px; height:50px; background:#fff; background-clip:content-box; text-align: center; line-height:50px; font-family:"Microsoft Yahei"; display: none; } html代码 <div class=&quo

[转] 基于C#的波形显示控件的实现

转自 基于C#的波形显示控件的实现[附完整源码下载] 编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的数据进行处理和保存,并以图形的方式显示),整个项目边学C# WinForm边设计,这个波形显示控件就是项目中的一部分,也花了自己绝大多数时间.此外,顺便将该波形显示控件当作自己毕业设计的内容,下文实际上是节选自自己的本科毕业论文,希望对大家能有所帮助.代码以及文章有疏漏.错误.不妥之处在所难免,欢迎

Android常用酷炫控件(开源项目)github地址汇总

转载一个很牛逼的控件收集贴... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style 等等. 一.ListView android-pulltorefresh一个强大的拉动

Windows App开发之常用控件与应用栏

控件的属性.事件与样式资源 如何添加控件 添加控件的方式有多种,大家更喜欢下面哪一种呢? 1)使用诸如Blend for Visual Studio或Microsoft Visual Studio XAML设计器的设计工具. 2)在Visual Studio XAML编辑器中将控件添加到XAML代码中. 3)在代码中添加控件. 注意:当应用运行时会看到你在代码中添加的控件,但在 Visual Studio XAML 设计器中看不到. 前面我们通过在工具箱拖住控件以及直接在写XAML代码来设置控件

FineUI(专业版)v3.2.0 发布(ASP.NET UI控件库)!

+2016-08-20 v3.2.0 +表格增强. +表格列RenderField增加属性ClientHtmlEncode,用于在客户端进行HTML编码. -增加示例:单元格编辑->杂项->客户端HTML编码. -表格的ExpandOnDoubleClick改名为ExpandOnDblClick:选项卡的CloseOnDblclick改名为CloseOnDblClick. -表格增加TreeExpandOnDblClick:树控件增加ExpandOnDblClick.增加示例:树表格->

【android】自定义组合控件PullToRefreshRecyeclerView

场景:自从Android 5.0发布以来,越来越多的开发者开始接触RecyeclerView,但是RecyclerView如何实现下拉刷新,上拉加在更多.于是我就偷懒 写了一个,以供大家参考和学习,以待大家改进. 构思:想必大家对SwipeRefreshLayout这个控件有一定了解,没错本次自定义组合控件也就是SwipeRefreshLayout与RecyeclerView的组合. 那么我们一步一步来实现: 1.首先写一个组合布局如下:pulltorefreshrecyclerview.xml

喜大普奔!.NET界面控件DevExpress v19.2发布,快来下载体验

DevExpress Universal Subscription(又名DevExpress宇宙版或DXperience Universal Suite)是全球使用广泛的.NET用户界面控件套包,DevExpress广泛应用于企业内容管理. 成本管控.进程监督.工业制造.生产调度等. 它主要的特点是:高效率和高实用性,拥有大量丰富的示例和帮助文档,开发者能够快速上手.在国内,DevExpress也拥有大量用户,资料比较完善,相互交流方便. [适用范围]:各种桌面.Web应用程序及移动开发,尤擅长

asp.net控件开发基础(1)(转)原文更多内容

asp.net本身提供了很多控件,提供给我们这些比较懒惰的人使用,我认为控件的作用就在此,因为我们不想重复工作,所以要创建它,这个本身便是一个需求的关系,所以学习控件开发很有意思. wrox网站上有本书 Professional ASP.NET 2.0 Server Control and Component Development 现在还没有出版,但网站上放出了代码,所以正好下载过来学习一下. 我看过前几章代码,环环相扣,作者用不同的知识向我们展示同一个效果,所以循序渐进的学下来很有好处. 虽