Android常用控件(慢更)

Android 学习记录

布局管理器

wrap_content:包含的内容,内容有多少,宽度就有多少

match_parent:匹配负空间

宽度高度使用的像素单位用的dp,不用px是因为安卓的屏幕碎片化比较严重,不同的机型有不同的分辨率,最终展示的效果也不同,而dp会自动适应。字体大小单位为sp

<View/>是所有空间的父类。

布局方式分为线性布局和相对布局;

线性布局LinerLayout

常用属性

属性 含义
android:id 设置id,以便于通过id找到对应空间(但是不能以数字开头)
android:layout_width 设置宽度
android:layout_height 设置高度
android:background 设置背景
android:layout_margin 设置页面外边距
android:layout_padding 设置页面内边距
android:orientation 设置排列方式(水平排列/垂直排列)vertical / horizontal

以下代码仅供参考:

<!--xml语法-->
<LinearLayout
    android:id="@+id/ll_1"
    android:layout_width="200dp"		//设置宽度为200dp
    android:layout_height="200dp"		//设置高度为200dp
    android:orientation="vertical"		//设置水平排列
    android:background="#000000"		//设置背景颜色为黑色
    android:paddingRight="20dp"			//设置页内上边距为20dp
    android:paddingLeft="20dp"			//设置页内左边距为20dp
    android:paddingTop="50dp"			//设置页内上边距为50dp
    android:paddingBottom="10dp"		//设置页内下边距为20dp
    android:layout_marginBottom="20dp"	//设置页外下边距为20dp
    android:gravity="center">			//设置为居中
        
    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0033" />
</LinearLayout>

效果演示:

image-20230304000920889

通过上面的简单小例子,我们基本上已经了解到了一些基本信息;接下来我们对整体布局的基本认识:

首先要知道,系统默认的布局为水平布局verticalhorizontal表示垂直布局

<!--xml语法-->
<LinearLayout
    android:id="@+id/ll_1"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:orientation="vertical"
    android:background="#000000"
    android:paddingRight="20dp"
    android:paddingLeft="20dp"
    android:paddingTop="50dp"
    android:paddingBottom="10dp">
    
    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0033"/>

</LinearLayout>
<!--xml语法  设置排列方式为垂直方向horizontal -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:orientation="horizontal"	
    android:background="#0066FF">
</LinearLayout>

image-20230303180801807

系统默认是水平布局,这里我们修改为垂直布局:

<!--xml语法-->
android:orientation="vertical"

202303031811606.gif

右边的绿色部分就显示了水平布局修改为垂直布局的全部过程;

那么如何修改各个模块之间的间距呢?Android为我们提供了方法。

常见的方法有:

<!--xml语法  上面模块设置为下面间距为20dp-->
android:layout_marginBottom="20dp"
<!--xml语法  下面模块设置为上面间距为20dp-->
android:layout_marginTop="20dp"

202303031814288.gif

为了使每个板块的大小相同,如果我们手动设置宽度,比较麻烦,需要不停的调试修改,甚至最后边缘部分存在微小的缝隙;那应该怎么处理呢?我们可以通过 修改模块权重使得每个板块宽度相同,分布均匀;

<!--xml语法   以下代码都属于同一个LinerLayout下 -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:orientation="horizontal"
    android:background="#0066FF"
    android:layout_marginTop="20dp">
//以下为主要部分
    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="#FFAA00"
        android:layout_weight="1"/>
    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="#AA0011"
        android:layout_weight="1"/>
    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="#FF00AA"
        android:layout_weight="1"/>
</LinearLayout>

修改板块权重

这里只需要修改android:layout_weight="1"其中的数据即可,数字是可以任意的,上面有三个1,则每个是三分之一(1/3)。

<!--xml语法-->
<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/ll_1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:orientation="vertical"
        android:background="#000000"
        android:paddingRight="20dp"
        android:paddingLeft="20dp"
        android:paddingTop="50dp"
        android:paddingBottom="10dp"
        android:layout_marginBottom="20dp"
        >

        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FF0033" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="horizontal"
        android:background="#0066FF"
        android:layout_marginTop="20dp">

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="#000000"
            android:layout_weight="1"/>
        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="#FF0033"
            android:layout_weight="1"/>
        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="#55AA99"
            android:layout_weight="1"/>
    </LinearLayout>
</LinearLayout>

相对布局RelativeLayout

初始代码:

<!--xml语法-->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
</RelativeLayout>

常用属性介绍:

属性 含义
android:layout_toEndOf 设置在xx的右边
android:layout_toStartOf 设置在xx的左边
android:layout_alignBottom 设置底部对齐
android:layout_alignParentBottom 设置负空间对齐
android:layout_below 设置在xx的下面

常用属性的基本使用:

相对布局_1

相对布局_2toRightOf

image-20230307233839778

<!--xml语法-->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/view_1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#000000"/>

    <View
        android:id="@+id/view_2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#FF0033"
        android:layout_toEndOf="@id/view_1"/>

    <View
        android:id="@+id/view_3"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#33FF99"
        android:layout_below="@id/view_1"/>

    <LinearLayout
        android:id="@+id/ll_1"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_below="@id/view_3"
        android:background="#0066FF"
        android:orientation="horizontal">

        <View
            android:id="@+id/view_4"
            android:layout_width="100dp"
            android:layout_height="match_parent"
            android:background="#FF69B4"/>

        <RelativeLayout
            android:id="@+id/rl_11"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#000000"
            android:padding="15dp">

            <View
                android:id="@+id/view_5"
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:background="#FF9900"/>

            <View
                android:layout_width="100dp"
                android:layout_height="match_parent"
                android:background="#FF9900"
                android:layout_toEndOf="@id/view_5"
                android:layout_marginStart="10dp"/>
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>

常用控件(持续更新)

TextView

初始代码

<!--xml语法-->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>

设置按钮组件

<!--xml语法-->
<Button
    android:id="@+id/btn_textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="TextView"/>

创建新的空白页面,并命名为TextViewActivity,创建相应的Activity后,进入对应生成的activity_text_view.xml文件中“配置”:

  • 文字大小、颜色

    <!--xml语法-->
    <TextView
        android:id="@+id/tv_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="IT-驿站 is running"
        android:textColor="#000000"
        android:textSize="24sp"/>
    

    效果演示:

    TextView_text
    这里显示波浪线提示有更好的解决方法,建议使用引用的方法显示;
    image-20230308232214920
    点击values.xml文件,根据要求填写需要使用的文本即可:
    TextView_text_2

  • 显示不下使用….

    <!--xml语法-->
    <TextView
        android:id="@+id/tv_2"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:ellipsize="end"
        android:text="@string/tv_test1"
        android:textColor="#000000"
        android:textSize="24sp"
        android:layout_marginTop="10dp"/>
    

    这里我们操作显示出来两行展示,但是我们的效果是一行展示不下,则在文字后面展示….的形式:

    TextView_text_点点点

    实际操作:

    TextView_text_点点点_2
    最后看见显示栏中出现了目测效果;

  • 文字 + icon

    <!--xml语法-->
    <TextView
        android:id="@+id/tv_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tv_test2"
        android:drawableRight="@drawable/icon_arrow_off"
        android:drawablePadding="5dp"
        android:textColor="#000000"
        android:textSize="24sp"
        android:layout_marginTop="10dp"/>
    

    效果演示:

    drawable

  • 中划线、下划线

    package com.example.myapplication;
    
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class TextViewActivity extends AppCompatActivity {
          
          
    
        private TextView mTv4;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
          
          
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_text_view);
            mTv4 = findViewById(R.id.tv_4);
            mTv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);  //中划线
            mTv4.getPaint().setAntiAlias(true); //去除锯齿
        }
    }
    
    <!--xml语法-->
    <TextView
        android:id="@+id/tv_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tv_test1"
        android:textColor="#000000"
        android:textSize="24sp"
        android:layout_marginTop="10dp"/>
    

    效果演示:

    中划线

    下划线

    方法一:

    package com.example.myapplication;
    
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class TextViewActivity extends AppCompatActivity {
          
          
    
        private TextView mTv4;
        private TextView mTv5;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
          
          
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_text_view);
            mTv4 = findViewById(R.id.tv_4);
            mTv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);  //中划线
            mTv4.getPaint().setAntiAlias(true); //去除锯齿
    
            mTv5 = findViewById(R.id.tv_5);
            mTv5.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
        }
    }
    
    <!--xml语法-->
    <TextView
        android:id="@+id/tv_5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/tv_test1"
        android:textColor="#000000"
        android:textSize="24sp"
        android:layout_marginTop="10dp"/>
    

    下划线_1

    方法二:采用HTML编写

    package com.example.myapplication;
    
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.text.Html;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class TextViewActivity extends AppCompatActivity {
          
          
    
        private TextView mTv4;
        private TextView mTv5;
        private TextView mTv6;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
          
          
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_text_view);
            mTv4 = findViewById(R.id.tv_4);
            mTv4.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);  //中划线
            mTv4.getPaint().setAntiAlias(true); //去除锯齿
    
            mTv5 = findViewById(R.id.tv_5);
            mTv5.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
    
            mTv6 = findViewById(R.id.tv_6);
            mTv6.setText(Html.fromHtml("<u>IT-驿站 is running</u>"));
        }
    }
    
    <!--xml语法-->
    <TextView
            android:id="@+id/tv_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""					//这里不填写内容
            android:textColor="#000000"
            android:textSize="24sp"
            android:layout_marginTop="10dp"/>
    

    效果演示:

    下划线_HTML

  • 跑马灯

    <!--xml语法-->
    <TextView
            android:id="@+id/tv_7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="IT-驿站 is running IT-驿站 is running IT-驿站 is running"
            android:singleLine="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:textColor="#000000"
            android:textSize="24sp"
            android:layout_marginTop="10dp"/>
    

    代码操作+效果演示:

猜你喜欢

转载自blog.csdn.net/weixin_50197544/article/details/130177435