Android学习之路(2) 设置视图

这篇具有很好参考价值的文章主要介绍了Android学习之路(2) 设置视图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、设置视图宽高

​ 在Android开发中,可以使用LayoutParams类来设置视图(View)的宽度和高度。LayoutParams是一个用于布局的参数类,用于指定视图在父容器中的位置和大小。
​ 下面是设置视图宽度和高度的示例代码:

// 创建一个LayoutParams对象
LayoutParams layoutParams = new LayoutParams(width, height);

// 设置视图的LayoutParams参数
view.setLayoutParams(layoutParams);

​ 在上述代码中,width和height分别代表要设置的视图的宽度和高度,可以是具体的像素值,也可以使用特殊常量进行设置,如LayoutParams.WRAP_CONTENT表示自适应内容大小,LayoutParams.MATCH_PARENT表示填充父容器。

例如,如果要将视图的宽度设置为200像素,高度设置为300像素,可以使用以下代码:

// 创建一个LayoutParams对象,设置宽度为200像素,高度为300像素
LayoutParams layoutParams = new LayoutParams(200, 300);

// 设置视图的LayoutParams参数
view.setLayoutParams(layoutParams);

​ 还可以通过在xml文件中android:layout_width设置视图宽度,通过android:layout_height设置视图的高度。

通过以上方式,你可以根据需求设置视图的宽度和高度。

第一步:创建Activity:SetBorderActivity.java

第二步:
​ 在activity_set_border.xml中分别使用LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,和固定长度dp

<?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">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="wrap_content是包裹内容大小"
        android:textColor="#000000"
        android:background="#999999"
        android:textSize="18sp"
        />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="match_parent是填充父容器"
        android:textColor="#000000"
        android:background="#999999"
        android:textSize="18sp"
        />
    <TextView
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="可以选择固定的长度"
        android:textColor="#000000"
        android:background="#999999"
        android:textSize="18sp"
        />

</LinearLayout>

效果如此:
Android学习之路(2) 设置视图,安卓,android,学习

我们也可以在java代码中实现:

第一步:在xml文件中添加(需设置为wrap_content)

<TextView
        android:id="@+id/set_border_java"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="在java代码中实现"
        android:textColor="#000000"
        android:background="#999999"
        android:textSize="18sp"
        />

第二步:在java代码中

package com.example.module1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

public class SetBorderActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_border);
        TextView border_java= findViewById(R.id.set_border_java);
        //获取布局参数
        ViewGroup.LayoutParams params= border_java.getLayoutParams();
        params.width=0;
        //设置布局参数
        border_java.setLayoutParams(params);
    }
}

应为在Java代码中,默认的单位是px,所以我们需要工具类将dp转换为px

首先我们创建一个Utils和一个Utils类

Android学习之路(2) 设置视图,安卓,android,学习

其中Utils.java中:

package com.example.module1.Utils;

import android.content.Context;

public class Utils {
    //根据手机的分辨率从dp的单位转成为px(像素)
    public  static int dip2px(Context context,float dpValue){
        //获取手机的像素密度(1个px对应几个px)
         float scale= context.getResources().getDisplayMetrics().density;
         return (int) (dpValue*scale+0.5f);
    }
}

在SetBorderActivity.java中:

package com.example.module1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.module1.Utils.Utils;

public class SetBorderActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_set_border);
        TextView border_java= findViewById(R.id.set_border_java);
        //获取布局参数
        ViewGroup.LayoutParams params= border_java.getLayoutParams();
        //默认单位px单位,需要把dp转化为px;
        params.width= Utils.dip2px(this,300);
        //设置布局参数
        border_java.setLayoutParams(params);
    }
}

最后修改清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication">
        
        <activity
            android:name=".SetBorderActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

运行结果为:
Android学习之路(2) 设置视图,安卓,android,学习

设置视图的间距

设置视图间距有两种方式:

  • 采用layout_margin属性,它指定了当前视图与周围平级视图之间的距离。包括layout_margin,layout_marginLeft,layout_marginTop,layout_marginRight,layout_marginBottom

  • 采用padding属性,它指定了当前视图与内部下级视图之间的距离。包括padding,paddingLeft,paddingTop,paddingRight,paddingBottom

第一步:创建SetMarginActivity.java
第二步:在对应的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="300dp"
    android:orientation="vertical"
    android:background="#00AAFF"
    >
<!--中间层的布局为黄色    -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="20dp"
        android:background="#FFFF99"
        android:padding="60dp"
        >
        <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FF0000"></View>
    </LinearLayout>


</LinearLayout>

打开Design:
Android学习之路(2) 设置视图,安卓,android,学习

其中蓝色的宽度为20dp,黄色的宽度为60dp。

设置视图的对其方式

设置视图的对齐方式有两种途径:

  • 采用layout_gravity属性,他指定了当前视图相对于上级视图的对齐方式。
  • 采用gravity属性,它指定了下级视图相对于当前视图的对其方式。
    ​ layout_gravity与gravity的取值包括:left,top,right,bottom,还可以用竖线连接各取值,例如“left|top”表示即靠左又靠上,也就是朝左上角对齐。

第一步:创建Activity 为SetGravityActivity.java
第二部:在对应的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="300dp"
    android:orientation="horizontal"
    android:background="#ffff99"
    >
<!--    第一个子布局的颜色为红色,它在上级视图中朝下对其,它的下级视图则靠左对其-->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:layout_margin="10dp"
        android:padding="10dp"
        android:layout_gravity="bottom"
        >
<!--      内部视图的宽度和高度都是100dp,且背景为青色-->
        <View
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#00ffff"
            ></View>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:background="#ff0000"
        android:layout_margin="10dp"
        android:padding="10dp"
        android:layout_gravity="top"
        android:gravity="right"
        >
        <View
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="#00ffff"
            ></View>
    </LinearLayout>


</LinearLayout>

打开Design

Android学习之路(2) 设置视图,安卓,android,学习文章来源地址https://www.toymoban.com/news/detail-646853.html

到了这里,关于Android学习之路(2) 设置视图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android学习之路(10) Bundle

    Bundle经常出现在以下场合: Activity状态数据的保存与恢复涉及到的两个回调: void onSaveInstanceState (Bundle outState) 、 void onCreate (Bundle savedInstanceState) Fragment的setArguments方法: void setArguments (Bundle args) 消息机制中的Message的setData方法: void setData (Bundle data) 其他场景不再列举 Bundle从

    2024年02月11日
    浏览(38)
  • Android学习之路(13) Handler详解

    Handler是一套 Android 消息传递机制,主要用于线程间通信。 用最简单的话描述: handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message. Binder/Socket用于进程间通信,而Handler消息机制用于同进程的线程间

    2024年02月09日
    浏览(41)
  • Android学习之路(12) setContentView详解

    setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件放在Activity中显示,下面我们根据源码分析setContentView是如何做到的 注意Activity的setContentView和AppCompatActivity的setContentView是有一些区别的,所以我们要分析两钟setContentView,下面先分析Activity的 (1).从Activity的

    2024年01月17日
    浏览(41)
  • Android学习之路(22) ARouter原理解析

    首先我们从命名来看:ARouter翻译过来就是 一个路由器 。 官方定义 : 一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦 那么什么是路由呢? 简单理解就是: 一个公共平台转发系统 工作方式: 1. 注册服务 :将我们需要对外暴露的页面或者服

    2024年01月22日
    浏览(42)
  • Android学习之路(4) UI控件之文本框

    本节给大家带来的UI控件是:TextView(文本框),用于显示文本的一个控件,另外声明一点,我不是翻译API文档,不会一个个属性的去扣,只学实际开发中常用的,有用的,大家遇到感觉到陌生的属性可以查询对应的API!当然,每一节开始都会贴这一节对应API文档的链接:TextVi

    2024年02月13日
    浏览(39)
  • Android学习之路(4) UI控件之输入框

    本节引言: 在本节中,我们来学习第二个很常用的控件EditText(输入框); 和TextView非常类似,最大的区别是:EditText可以接受用户输入! 如下图,相信你对于这种用户登录的界面并不陌生,是吧,我们很多时候都用的这种界面 相比另外这种,下面这种又如何? 还不赖是吧,当

    2024年02月13日
    浏览(42)
  • 安卓学习笔记:安卓11访问/读写 Android/data 目录

    省流提示:采用android studio工具开发,记录一次低级的开发,避免以后忘记或者踩坑。 最近有个业余项目开发到一小半,过程中需要读写 Android/data目录的文件,采用常规的文件操作总是提示权限被拒绝,无奈上网参考了很多资料,终于得到了解决。 无法访问Android/data 的原因

    2024年02月13日
    浏览(45)
  • Android学习之路(22) 从模块化到组件化

    Android 应用项目 , 都存在一个应用模块 ( Application Module ) , 在 build.gradle 构建脚本中 , 第一个插件配置 com.android.application , 表明 该 Module 编译打包后的输出是 APK 安装包 ; 该项目可以直接运行 ; 如果在 build.gradle 配置的是 com.android.library 插件 , 那么 编译 Module 打包后输出的是 a

    2024年01月22日
    浏览(49)
  • Android学习之路(23)组件化框架ARouter的使用

    支持直接解析标准URL进行跳转,并自动注入参数到目标页面中 支持多模块工程使用 支持添加多个拦截器,自定义拦截顺序 支持依赖注入,可单独作为依赖注入框架使用 支持InstantRun 支持MultiDex (Google方案) 映射关系按组分类、多级管理,按需初始化 支持用户指定全局降级与局

    2024年01月22日
    浏览(82)
  • Android Studio安卓开发--ListView学习整理

    ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。 (1)activity_main.xml布局中加入ListView控件:(先占满整个布局的空间) (2)MainActivity.java中使用ListView展示大量数据: 使用ArrayAdapter泛型类(指定为String)将数据

    2024年01月20日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包