Android “生僻”控件篇

本文主要收录一些还算生僻的UI控件,也是为了自己忘记的时候方便查看吧。

目录:

  • 1.AutoCompleteTextView
  • 2.MultiAutoCompleteTextView
  • 3.ToggleButton
  • 4.RatingBar

1.AutoCompleteTextView

AutoCompleteTextView是一个自动匹配文本内容的控件,当你输入的内容与数据源里面的数据匹配时,就会以列表的形式提示出来

它的主要属性有completionThreshold,表示输入多少个字符时会出现提示。(比如:android:completionThreshold="1")

使用步骤如下:
① 定义好completionThreshold属性
② 要有一个适配器,作为提示的数据源
③ AutoCompleteTextView对象调用setAdapter方法绑定数据

public class MainActivity extends AppCompatActivity {

    private ArrayAdapter<String> arrayAdapter;
    private AutoCompleteTextView autoCompleteTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.auto);
        String data[] = {"what","hello", "how", "happy", "haha"};
        autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
        arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
        autoCompleteTextView.setAdapter(arrayAdapter);
    }
运行结果.png

2.MultiAutoCompleteTextView

MultiAutoCompleteTextView有点类似于AutoCompleteTextView,但它还支持多次匹配

它还多了一个setTokenizer方法,可以设置分隔符。用法也与AutoCompleteTextView差不多。

//.xml布局文件里设置一个MultiAutoCompleteTextView控件的代码
 <MultiAutoCompleteTextView
        android:hint="请输入要发送的对象"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/multiAutoCompleteTextView" />
        
//在MainActivity里实现的代码
public class MainActivity extends AppCompatActivity {

    private ArrayAdapter<String> arrayAdapter;
    private MultiAutoCompleteTextView  multiAutoCompleteTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.auto);
        String data[] = {"343028402@qq.com", "292500222@qq.com", "489103913@qq.com", "401804928@qq.com"};
        arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
        multiAutoCompleteTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView);
        multiAutoCompleteTextView.setAdapter(arrayAdapter);
        multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
    }
运行结果.png

3.ToggleButton

ToggleButton是多状态按钮,它有选中和未选中两种状态

它的主要属性有textOn(选中状态下显示的文字,默认为on),textOff(未选中状态下显示的文字,默认为off),checked(设置状态,默认为false)。状态的监听器为OnCheckedChangeListener,所以可以通过setOnCheckedChangeListener来做相关逻辑处理。这里我再用一个ImageView来代表它的状态,选中时显示一张图片,未选中时显示另一张图片。

图片.png
运行结果.png

4.RatingBar

RatingBar类似于星星评分的控件,继承ProgressBar,除了ProgressBar的属性外还有特有属性,监听器为OnRatingBarChangeListener

特有属性:
android:isIndicator:是否用作指示,用户无法更改,默认false
android:numStars:显示多少个星星,必须为整数,默认为5个。
android:rating:默认评分值,必须为浮点数。
android:stepSize: 评分每次增加的值,必须为浮点数。

布局代码:

布局代码.png

Java代码:

图片.png

初始效果:

初始效果.png

设置rating之后:

设置rating之后.png

要想自定义星星的样式,自定义style文件即可。比如:

星条的drawable资源layer-list图层:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background"
        android:drawable="@drawable/rating_off"/>
    <item android:id="@android:id/progress"
        android:drawable="@drawable/rating_on"/>
</layer-list>


在values文件夹下styles.xml文件中添加style:
 <style name="roomRatingBar_1" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingbar_layer</item>
        <item name="android:minHeight">24dip</item>
        <item name="android:maxHeight">24dip</item>
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 ...
    Moment__格调阅读 10,098评论 0 11
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,916评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,940评论 0 17
  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 8,925评论 1 11
  • 吾付重金买世书,为得世间鸿博著。 至今三载无功出,纵书如草撒四处。
    圣冰_16c0阅读 1,801评论 0 0

友情链接更多精彩内容