安卓Ui学习1
1、线性布局 LinearLayout
android:orientation="horizontal"水平布
android:orientation=“vertical”:垂直布局
android:gravity="center"布局位置
android:layout_width="match_parent"填充宽度 android:layout_height="wrap_content"自适应高度
水平布局:几个控件位于同一行/不同一列
垂直布局:控件位于同一列
只有水平布局horizontal时: android:layout_gravity=“center_vertical”
才有作用,控件位于那一列的中间 只有垂直布局vertical时:
android:layout_gravity="center_horizontal"才有效果,位于那一行的中间
layout_gravity:控件的位置。 gravity:控件里面文字的位置。
当 android:orientation=“vertical” 时,
只有水平方向的设置才起作用,垂直方向的设置不起作用。即:left,right,center_horizontal 是生效的。当 android:orientation=“horizontal” 时,
只有垂直方向的设置才起作用,水平方向的设置不起作用。即:top,bottom,center_vertical 是生效的。
android:layout_weight的真实含义是:一旦View设置了该属性(假设有效的情况下),那么该 View的宽度等于原有宽度(android:layout_width)加上剩余空间的占比!
match_parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小
wrap_content表示让当前的控件大小能够刚好包含里面的内容,也就是由控件内容决定当前控件的大小
密码:(一个只能输入数字,一个可以输入字符串和数字)
文本框提示属性 android:hint=“请输入用户名”
layout_weight=“1” 填充(可删掉)
android:textSize="20dp"更改字体大小
android:layout_marginLeft="10dp"添加距离
Chan 2021/5/5 20:12:13
xml中 android:ems属性 ,作为EditText 默认生成 的属性,其含义是需要编辑的 字符串长度
(例如:=“10”)
但是 EditText的属性 ,只有在 android:layout_width=“wrap_content” 时,才会显示;
相对布局:RelativeLayout
lay_alignParentLeft = “true”;lay_alignParentTop = “true”;与父本的左上角对齐
帧布局:FrameLayout
所以控件默认左上角
百分比布局
只有LinearLayout 支持使用layout_weight属性来实现按比例指定控件大小的功能
引入布局
常用控件
1、TextView
android:text=“hello” 指定文本内容
android:gravity=“cneter”;(top,bottom,left,right,center等等,可用"|"指定多值);
android:textSize=“24sp” 指定字的大小在,字体大小单位sp
android:textColor=“#00ff00” 指定文字颜色
2、Button
android:text=“ button”(但系统绘对所以转换成大写,取消效果添加android:textAllCaps=“false")
给button添加监听器 (在MainActivity里) p81
3、EditText
输入编辑内容
android:hint=” “ 提示信息
android:maxLines=”2“ 指定EditText的最大行数为两行
为Button 的点击事件注册一个监听器
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button2);
button.setOnClickListener(new View。OnClickListener(){
@Override
public void onClick(View v)
//此处添加逻辑
});
}
每点击button都会监听onClick方法
实例
package com.example.chanyongkjian;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button2);
editText = (EditText) findViewById(R.id.editTextTextPersonName3);
button.setOnClickListener(this);
}
@Override
public void onClick(View v){
switch (v.getId()) {
case R.id.button2:
String inputText = editText.getText().toString();
Toast.makeText(MainActivity.this, inputText,
Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
首先 findViewById() 得到EditText实例,然后在在按钮的点击事件里调用 EditText的getText() 方法获取到输入的内容,再调用toString()方法转换成字符串,最后老方法使用Toast将输入的内容显示出来
4、ImageView
图片通常放在drawable
android:src="@drawable/img_1" 指定图片
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/c" />
setImageResource( )方法将图片改为其他图片
@Override
public void onClick(View v){
switch (v.getId()) {
case R.id.button2:
imageView.setImageResource(R.drawable.b);
break;
default:
break;
}
}
5、ProgressBar 进度条
style="?android:attr/progressBarStyleHorizontal" 指定水平进度条
android:max=“100”
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:max="100" />
可见属性:android:visibility=” “(visible、invisible(变透明了)、gone)
用getVisibility()方法判断ProgressBar 是否可见,可见就隐藏进度条,不可见就显示显示条
动态修改进度条:
public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
int progress = progressBar.getProgress();
progress = progress + 10;
progressBar.setProgress(progress);
break;
default:
break;
}
}
6、AlertDialog 界面弹出对话框
(AlertDialog不需要在标签里说明)
首先AlertDialog.Builder创建一个AlertDialog实例,然后对话框设置标题、内容、可否用back框关闭对话框等属性,接下来调用setPositiveButton()方法为对话框设置确定按钮的点击事件,调用setNegativeButton()方法设置取消按钮的点击事件,最后调用show()方法显示对话框。
实例:
public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("This is Dialog");
dialog.setMessage("Something important.");
dialog.setCancelable(true);
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
break;
default:
break;
}
}
7、ProgreeDialog 带有进度条的对话框
首先构建一个ProgressDialog对象,然后同设置标题等等,最后shou()显示出来
public void onClick(View v) {
switch (v.getId()) {
case R.id.button2:
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("This is Dialog");
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(true);
progressDialog.show();
break;
default:
break;
}
}