欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android studio APP开发 第五章 常用控件讲解

程序员文章站 2022-06-11 09:32:15
...

常用控件

控件都是在layout文件目录下的.xml文件里添加。
Android studio APP开发 第五章 常用控件讲解

TextView

代码示例

<TextView
        android:id="@+id/text_first"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="传值显示"
        android:textSize="@dimen/text_size_first"
        android:textColor="@color/text_color_first"
        />

代码解释

id 即一个控件专属的名字,Activity.java文件通过id找到控件,并对控件进行操作,以实现某些功能。 Activity.java文件中找到button的代码如下(此处以设置点击事件为例):

findViewById(R.id.button_first).setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,FirstActivity.class);
                intent.putExtra(TITLE,title);
                startActivityForResult(intent,REQUEST_CODE);
            }
        });

Layout_width 和 Layout_height 为TextView的宽和高。 每一个控件都可以设置。wrap_content 为自适应,自动适应text的大小。
android:text=“传值显示” 即设置TextView所要展示的信息。
textSizetextColor 为设置TextView文本的大小和颜色。

这些是每一个控件都可以设置的属性,属于通用属性。

Button

Button 和TextView 几乎一样,是TextView的特殊情况,被人赋予的button的功能后于TextView区分开来。
代码如下:

<Button
        android:id="@+id/button_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点击返回"/>

EditText

EditText 即可编辑的控件,可以用来输入文本,用户登录时输入账户密码输入手机号输入名字邮箱账号等。

<EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name" />

    <EditText
        android:id="@+id/editText4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="phone" />

    <EditText
        android:id="@+id/editText5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textEmailAddress" />

四个edittext分别为输入密码,名字,电话号码,邮箱地址。输入类型被限制关键代码在于inputType。 也可以自己写一个edittext,输入类型不限。效果如图(可自己运行后调试):
Android studio APP开发 第五章 常用控件讲解

addTextChangedListener 设置文本改变监听器

即针对EditText里的内容改变时设置的一些功能。比如微博在输入内容超过140字时提示内容已超过限制。
代码如下:

 EditText editText = (EditText) findViewById(R.id.editText4);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                Log.i(TAG, "s:" + s.toString() + ",start:" + start + ",count:" + count + ",after:" + after);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                Log.i(TAG, "s:" + s.toString() + ",start:" + start + ",count:" + count + ",before:" + before);
            }

            @Override
            public void afterTextChanged(Editable s) {

                if (s.toString().length() > 5) {
                    Toast.makeText(MainActivity.this, "啊,救命,超过5个字啦", Toast.LENGTH_LONG).show();
                }
                Log.i(TAG, "s:" + s.toString());
            }
        });

分别为三个方法,beforeTextChanged(Text改变前) onTextChanged(Text改变时) afterTextChanged(Text改变后)Log 标记每一次改变。

ImagView

用来显示图片的控件。
代码如下:

<ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="@drawable/ic_launcher_background"
        android:src="@mipmap/ic_launcher"
        android:scaleType="fitCenter"
        android:id="@+id/imageView"/>

scaleType 为图片的显示方式,有挺多内容,可以一个个尝试。
效果如图:
Android studio APP开发 第五章 常用控件讲解

SeekBar

SeekBar代码:

<SeekBar
        android:id="@+id/seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

一个监听器例子代码:

findViewById(R.id.seekBar).setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {

            }
        });
        SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
        
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });