Android 给我们提供了大量的UI 控件,合理的使用这些控件就可以非常轻松地编写出相当不错的界面,下面我们就选几种常用的控件,详细介绍一下他们的使用方法。
首先新建一个项目UIWidgetTest 。允许Android Stuido 自动创建 Activity , 名称和布局名都使用默认。
4.2.1 TextView
内容过于简单,就不介绍了。
4.2.2 Button
这里只介绍一个属性 android:textAllCaps = "false" ,如果不设置 false ,那么Button 按钮的英文都会是大写!
4.2.3 EditText
android:maxLines 属性可以设置最大行数,在高度为wrap_content 的时候,避免无限制的扩大高度。
4.2.4 ImageView
目前的设备分辨率基本都是xxhdpi 的,所以图片资源文件都是放在这个目录下的。
4.2.5 ProgressBar
ProgressBar 用于在界面上显示一个进度条,表示程序正在加载数据。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
我们运行程序后会看到一个圆圈在屏幕旋转,那么如何消失呢?可以在xml 中通过android:visibility 属性来设置消失,visible是默认值显示,gone 是在界面中彻底消失不占用位置,invisible 是不可见但是占用位置。也可以在代码中设置。
btn.setOnClickListener{
if (progressBar.visibility == View.VISIBLE){
progressBar.visibility = View.GONE
}else{
progressBar.visibility = View.VISIBLE
}
}
同时我们还可以给进度条设置不同的样式来达到不同的效果,使用style 属性
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
max=100
android:progress="50"
/>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
max=100
android:progress="50"
/>
这两种都是横向进度条,style 是设置进度条的样式,max 是设置进度条的进度。android:progress 是设置当前进度。
我们可以在代码中动态的设置进度来实现进度条的效果。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn.setOnClickListener{
progressBar.progress += 10
}
}
4.2.6 AlertDialog
AlertDialog 可以在当前界面弹出一个对话框,对话框是置顶于所有见面元素之上的,能够屏蔽其他控件的交互能力,一般用于提示重要内容或者警告信息。这是在动态代码中直接创建的,不是在xml 中创建的。
btn.setOnClickListener{
val alertDialog:AlertDialog.Builder = AlertDialog.Builder(this).apply {
setTitle("This is Dialog")
setMessage("Something important")
setCancelable(false) // 设置点击AlertDialog 以外的区域不会关闭 AlertDialog ,默认是 true
setPositiveButton("OK"){dialog, which ->
}
setNegativeButton("Cancel"){dialog, which ->
}
show()
}
}
我们看到这里又运用到了 Java 中的单抽象方法接口,而且还使用了 apply 标准函数,其实也可以不使用apply 标准函数的,因为AlertDialog.Bunilder 是可以链式调用的。这里只是为了让我们更加的熟悉Kotlin 的函数。