当前位置: 首页 > article >正文

Android开发-android:gravity和android:layout_Gravity属性的用法

1 简介:

在编写Android布局文件的时候,有两个非常容易混淆的属性,即android:gravity和android:layout_Gravity,本篇介绍它们在使用时的区别。

2 android:gravity和android:layout_Gravity的最主要的区别:

android:gravity:是控件内部的对齐方式。可以理解为,本控件会影响到子控件的显示;

android:layout_gravity:组件对于父容器的位置。它的参照物是“父控件”;

3 举例:

3.1例1:android:gravity举例:

让各个控件居中显示:

android:gravity设置为center

布局文件:

<?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"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:gravity="center"><TextViewandroid:id="@+id/hello_textview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"android:maxLength="500"/><ImageViewandroid:layout_width="160dp"android:layout_height="200dp"android:id="@+id/imageview1"android:src="@mipmap/ic_launcher"></ImageView><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="确定"/></LinearLayout>

效果:

 

说明:

LinearLayout是垂直排列;并且设置了属性 android:gravity="center";

LinearLayout的子控件没有设置android:gravity="center"。

3.1例1:android:layout_gravity举例:

一部分控件不居中显示;一部分控件居中显示

布局文件:

<?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"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/hello_textview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:maxLength="500"android:text="Hello World!" /><ImageViewandroid:layout_gravity="center"android:id="@+id/imageview1"android:layout_width="160dp"android:layout_height="200dp"android:src="@mipmap/ic_launcher"></ImageView><Buttonandroid:layout_gravity="center"android:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="确定" /></LinearLayout>

效果图:

 

 说明:

LinearLayout是垂直排列;

textview没有设置android:layout_gravity="center",所以它位于左上角,是第一个控件;

ImageView和Button设置了android:layout_gravity="center",所以水平居中(父布局是垂直排列);ImageView是第二个控件;Button是第三个控件。

4用java代码进行设置:

例子代码:

Button button  = new Button(this);  
button.setText("确定");  
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);  
//此处相当于布局文件中的Android:layout_gravity属性  
lp.gravity = Gravity.RIGHT;  
button.setLayoutParams(lp); //此处相当于布局文件中的Android:gravity属性  
button.setGravity(Gravity.CENTER);  LinearLayout linearLayout = new LinearLayout(this);  
//注意,对于LinearLayout布局来说,设置横向还是纵向是必须的!否则就看不到效果了。  
linearLayout.setOrientation(LinearLayout.VERTICAL);  
//添加控件到layoaut
linearLayout.addView(button);  setContentView(linearLayout);  

说明:

lp.gravity = Gravity.RIGHT;  相当于布局文件中的Android:layout_gravity属性  

button.setGravity(Gravity.CENTER); 相当于布局文件中的Android:gravity属性  

linearLayout.setOrientation(LinearLayout.VERTICAL); 设置laout的排列方式,VERTICAL是垂直排列。


 

http://www.lryc.cn/news/2413981.html

相关文章:

  • 测试工具整理(3)——单元测试
  • 计算机网络的组成及通信子网和资源子网的划分
  • Java使用XDOC实现word,pdf等格式的生成及转换
  • 简单认识NHibrenate
  • OpenCV的copyTo()函数讲解及应用
  • ASP.Net学习心得
  • 用 Gmail 的 SMTP 发送邮件
  • 启动应用程序出现msflxgrd.ocx找不到问题解决
  • 鸿蒙原生应用元服务-访问控制(权限)开发工作流程相关
  • main.js_vue
  • 又一个好用的嵌入式设计框架
  • C#上下文菜单(右键菜单)ContextMenuStrip用法总结
  • 基于STC12C5A60S2系列1T 8051单片机的TM1637键盘数码管模块的数码管显示与TM1637芯片连接的按键的按键值的功能
  • JAX-WS 介绍 【转载】
  • 东方航空航班如何值机?
  • location.hash属性介绍
  • 键盘打字指法规范(附图解)
  • 什么是webservice
  • 数据中心日常运维主要工作内容具体包括哪些方面呢?
  • Windows系统缺少丢失mscoree.dll文件如何解决的?
  • 如何扩容C盘?6种扩展C盘方法!
  • process.waitfor()超时配置
  • Structs2学习(三)
  • win怎么查看linux文件,Windows下查看LINUX ext2/ext3格式的三种常用方法(图解)
  • Element UI --- Select下拉框多选页面数据不更新问题
  • ComponentOne Crack,componentone控件集
  • 【迅搜18】扩展(一)Xapian官方文档学习
  • Android广播机制——广播的注册
  • 线程死锁及其解决
  • 微信小程序自定义navigation-bar导航栏(自适应安卓苹果)