目录
文字显示
TextView中文本换行,直接输入换行符\n,转义字符为\,若要打出“\”,则需输入"\\"
maxLines设置最大允许的行数
ellipsize="end"表示超出的行以省略号替换
android:maxLines="11" android:ellipsize="end"
1.设置文本内容
xml:
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text1"/>
Java:
//获取文字空间
TextView tv = findViewById(R.id.text1);
//设置显示的文字
tv.setText("你好,世界");
tv.setText(R.string.text1); //引用资源文件定义的字符串常量
2.设置文本大小
xml:
android:textSize="30px"
Java:
//设置文本大小,默认单位sp tv.setTextSize(30);
字号有三种单位:px,dp,sp
当手机设置里面调整系统字号,sp会跟随修改
3.设置文本颜色
xml:
android:textColor="#00ff00" <!--六位十六进制,透明度默认为ff即不透明,与Java中相反-->
Java:
//设置文本颜色 tv.setTextColor(Color.GREEN); //系统自带color类定义的颜色常量--十六进制 tv.setTextColor(0xff00ff00); //八位十六进制,两位为一组:透明度-ff不透明;红色分量;绿色分量;蓝色分量 tv.setTextColor(0x00ff00); //六位十六进制,缺少透明度,默认为0即透明
xml引用常量:
<color name="white">#FFFFFFFF</color> <!--colors.xml文件定义颜色常量--> android:textColor="@color/white" <!--布局文件直接引用颜色常量-->
4.设置文本背景颜色
xml:
android:background="@color/white"
Java:
//设置背景颜色 tv.setBackgroundColor(Color.WHITE); tv.setBackgroundResource(R.color.white); //资源文件,颜色常量
视图基础
基本所有的系统组件均属于视图View
1.设置视图宽高
视图宽度:layout_width
视图高度:layout_height
属性值:wrap_content 与内容自适应
match_parent 与上级视图保持一致(旧版本:fill_parent)
以dp为单位的具体尺寸
xml:
android:layout_width="wrap_content" android:layout_height="wrap_content"
Java:
//设置视图宽高
//确保xml文件的宽高属性值均为 wrap_content
//获取控件的布局参数
ViewGroup.LayoutParams params = tv.getLayoutParams();
//修改布局属性值:width-宽;height-高
params.width=300; //默认单位为px
params.width= Utils.dp2px(this,300); //将dp转为px,300dp
//填入修改后的布局参数
tv.setLayoutParams(params);
重新创建一个类,实现dp转px
public class Utils {
//静态方法,dp转为px
public static int dp2px(Context context, float dpValue){
//获取当前手机的像素密度(1个dp对应几个px)
float scale = context.getResources().getDisplayMetrics().density;
return (int)(dpValue * scale +0.5f); //四舍五入
}
}
2.设置视图间距
外间距:layout_margin(周围平级之间)
layout_marginLeft、layout_marginTop、layout_marginRight、layout_marginBottom
内间距:padding(内部下级之间)
paddingLeft、paddingTop、paddingRight、paddingBottom
xml:
android:layout_margin="10dp" android:padding="5dp"
3.设置视图对齐方式
layout_gravity:当前视图相对于上级视图的对齐方式
gravity:下级视图相对于当前视图的对齐方式
取值: left、top、right、bottom、竖线连接各取值(left|top)(左上角对齐)
常用布局
线性布局-LinearLayout
各视图排列方式:orientation
取值:vertical(垂直、从上往下排)、horizontal(水平、从左往右排,默认)
权重:layout_weight设置为整数体现,在同一个线性布局内
layout_width设置为0dp:表示layout_weight的比例代表水平方向宽度比
layout_height设置为0dp:表示layout_weight的比例代表垂直方向高度比
相对布局 -RelativeLayout
下级视图默认在左上角
网格布局-GridLayout
多行多列
线性布局只能一行多列或一列多行
垂直滚动视图-ScrollView
视图内只能拥有一个子视图,可以使用其他布局以实现拥有多个视图
宽度与父视图一致,高度与内容自适应
<ScrollView android:layout_width="match_parent" android:layout_height="wrap_content">
水平滚动视图-HorizontalScrollView
高度与父视图一致,宽度自适应
<HorizontalScrollView android:layout_width="wrap_content" android:layout_height="match_parent">
按钮触控
onClick调用方法不赞同使用,高耦合
按钮的监听器
点击监听器:setOnClickListener 按钮被按住少于500ms时触发
长按监听器:setOnLongClickListener 按钮被按住超过500ms时触发
//获取按钮
Button bt = findViewById(R.id.button1);
//监听点击事件
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//创建意图对象-实现上下文跳转
Intent intent = new Intent();
//获取上下文
intent.setClass(MainActivity.this,activity_first.class);
//跳转
startActivity(intent);
}
});
//长按监听事件
bt.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
//长按事件返回false----自己不处理,向上一级传递,由上一级处理长按事件
//返回true----自行处理,不做向上传递
return false;
}
});
//点击监听事件另种写法
bt.setOnClickListener(new myOnclick());
}
//静态-防止内存泄漏
static class myOnclick implements View.OnClickListener{
@Override
public void onClick(View view) {
}
}
实现一个函数同时监听多个按钮的点击事件:
package com.example.myapplication;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Listener extends AppCompatActivity implements View.OnClickListener {
private TextView result;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.activity_main);
//获取按钮
Button bt = findViewById(R.id.button1);
//以当前函数作为监听
bt.setOnClickListener(this);
//获取点击显示结果的文本框
result = findViewById(R.id.result);
}
@Override
public void onClick(View view) {
//通过判断点击按钮的id,以实现监听多个按钮点击事件
if(view.getId() == R.id.button1)
{
Date date = new Date();
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String st = String.format("点击时刻为:%s",sdf.format(date));
result.setText(st);
}
else {
result.setText("你好");
}
}
}
按钮状态:是否可用(enabled)
可用按钮: 文字为黑色,允许点击,点击后触发事件(为true)
不可用按钮:文字为灰色,不允许点击,即使点击也没有反应(为false)
Java :
//禁用按钮
bt.setEnabled(false);
修改按钮背景:backgroundTint
Java:
bt.setBackgroundColor(Color.GRAY);
图像显示
存放位置
xml显示-ImageView
Java显示
//获取图片视图
ImageView imageView = findViewById(R.id.iv_first);
//根据资源显示图片
imageView.setImageResource(R.drawable.first);