三三想成为安卓糕手TextView:文本显示控件,基于TextView还有很多子类,都与文本处理有关,大多数文本控件都是基于TextView设计的,比如下面的按钮button,编辑框EditText等等;主要学习TextView,一法通万法


这里我们调整一下页面跳转
Button btnTest = findViewById(R.id.btn_test);//view这里翻译为视图更加合适
btnTest.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent(MainActivity.this , TextViewActivity.class);
startActivity(intent);
Log.i("info","hello");//打印日志
}
});LinearLayout必须设置排列方向
android:gravity="center" //视图居中
android:orientation="vertical" //垂直的
//这两句代码是在LinearLayout中阐述的,注意结束>括号gravity 重力 horizontal [ˌhɔrɪˈzɑnt(ə)l] 水平的
在 Android 中,gravity 用于控制视图内容或者视图自身在容器里的位置。它的取值可以是单个方向(像 top、left),也能是组合方向(例如 top|end)。
orientation 方向[ˌɔriənˈteɪʃ(ə)n]
orientation 主要用于明确线性布局(LinearLayout)的排列方向,或者屏幕的旋转方向。
默认是horizontal


用xml方式设置一些初始属性,比如文本内容和文字尺寸
<TextView
android:id="@+id/tv_Sansan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="里面有纯情女大"/>后续,Java代码可以更改相应的属性值。
点击是每一个view都拥有的方法;button也好,textview也好,图片等等
我悟了xd,java跳转页面后文字内容和尺寸的改变实际上还是作用在一个activity上,本质只是修改,而非再创建
TextView tvSansan = findViewById(R.id.tv_Sansan);//使用xml中定义的文本控件
tvSansan.setOnClickListener(new View.OnClickListener() {
//对这个按钮设置一个监听器,但是你看不到按钮的样式,只有文字,点就完了
@Override
public void onClick(View v) {
tvSansan.setText("此时一位抠脚大汉闪亮登场");//我们在java中也可以进行文本的设置;xml中设置通常是一些默认属性
tvSansan.setTextSize(30f);
}
});总结:比如设置字体样式,Java和xml中进行对比,还有很多,慢慢了解
tvSansan.setTypeface(Typeface.DEFAULT_BOLD);//设置默认加粗
android:typeface="monospace",在LinearLayout中定义,左图有定义,右图无。666

比如右上

还有很多属性
right右上
center|left 居中靠左
right|bottom右下
重点记忆属性,具体的值不必记得非常清楚
Gravity类中提供了很多常量
TextView tvSansan = findViewById(R.id.tv_Sansan);//使用xml中定义的文本控件
tvSansan.setGravity(Gravity.LEFT);//左上android:background="@color/my_blue"

android:textColor="@color/white" //设置字体颜色
android:maxLines="2" //设置最大行数
android:ellipsize="end" //如果文本字太多以省略号的形式展现ellipsis [ɪˈlɪpsɪs] 省略
TextView 中配置drawable哇靠,自己理解drawable,这玩意就是指能在屏幕上绘画出各种图形的相关资源。
在文本中添加图片

android:drawableLeft="@mipmap/ic_launcher_round"//在文本当中添加图片,并放在左边
android:drawableTop="@mipmap/ic_launcher_round"
android:drawableRight="@mipmap/ic_launcher_round"
android:drawableBottom="@mipmap/ic_launcher_round"
android:drawablePadding="20dp" //设置两者的边距setCompoundDrawablesRelativeWithIntrinsicBounds()
在固有的边界上设置复合的drawable
Compound 复合的 Drawable 可绘制的对象 intrinsic 固有的
自己理解,传四个参数,设置左,上,右,下都用什么图片(实参可为null)
大白话:在固定边界上设置复合的图标
其实就是在文本的四个方向上设置图片


这里是方法内部;可能我们只传递一个参数,如果其余参数为空那么就不设置了,

我叼
思考:==图片如何获取???==我们要用的图片是需要作为参数传入set方法中的,所以需要把图片转为drawable类型
类比获取颜色的思想:
((20250626105516-09c53ay “ContextCompat.getDrawable(this, R.mipmap.ic_launcher_round);”))

所以再来看这个代码:那我们就只传递一个图片作为参数,放到左边吧;
ContextCompat 上下文兼容工具类
TextView tvSansan = findViewById(R.id.tv_Sansan);//使用xml中定义的文本控件
Drawable drawable = ContextCompat.getDrawable(this, R.mipmap.ic_launcher_round);
tvSansan.setCompoundDrawablesWithIntrinsicBounds(drawable,null,null,null);这里看看效果(我放了4张图)兄弟太帅了666

R.mipmap.ic_launcher_round是获取当前res下的一个安卓图标
