android的XML文件(包括layout下的和values下的)注释一般采用 <!--注释内容 -->的方式进行,也就是说,采用//是行不通的,不信你可以试试看。

    在XML中,形如    <Button           />      的表示方式,其中“/>”的含义表示这个XML中没有内文,他是一个最小组成单元,也就是说他的中间不能包含其他任何< >的代码,所以在<Button />中间注释会出现错误 
dp:密度无关像素(dip) 无论屏幕的分辨率如何,总能显示相同的大小,一般使用dp作为控件与布局的宽高单位。
sp:可伸缩像素。在设置字体大小时使用。
 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context = "com.example.helloworld.relativelayout.MainActivity">
<!-- context 要写文档对应目录下的 -->
<!-- android:layout_toRightOf 后面的@+id/button要和第一个Button 一致,包括空格
不然或出错 ,没写android:layout_below 会让布局混乱 -->
<Button
android:id = "@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop = "true"
android:layout_marginTop = "100dp"
android:layout_marginLeft = "50dp"
android:text = "Button1"/>
<Button
android:id = "@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf = "@+id/button"
android:layout_below = "@+id/button"
android:layout_marginTop = "15dp"
android:text = "Button2"/>
</RelativeLayout>
package com.example.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1); 要改成layout1才可以
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld">
<!-- android:label 后的内容是可以改的 -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:label="布局管理器"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
<!-- 网格布局  实现计算器  -->

<!--  要>=6列  -->
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:columnCount=""
android:rowCount = ""
android:orientation="horizontal">
<Button android:text = "/"
android:layout_column=""/>
<Button android:text = ""/>
<Button android:text = ""/>
<Button android:text = ""/>
<Button android:text = "*"/>
<Button android:text = ""/>
<Button android:text = ""/>
<Button android:text = ""/>
<Button android:text = "-"/>
<Button android:text = ""/>
<Button android:text = ""/>
<Button android:text = ""/>
<Button android:text = "+"
android:layout_gravity = "fill_vertical"
android:layout_rowSpan=""/>
<Button android:text = ""/>
<Button android:text = "="
android:layout_gravity = "fill_horizontal"
android:layout_columnSpan=""/>
</GridLayout>
 )fill_parent
设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。这跟Windows控件的dockstyle属性大体一致。设置一个顶部布局或控件为fill_parent将强制性让它布满整个屏幕。
) wrap_content
设置一个视图的尺寸为wrap_content将强制性地使视图扩展以显示全部内容。以TextView和ImageView控件为例,设置为wrap_content将完整显示其内部的文本和图像。布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。
)match_parent
Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用。那么如果考虑低版本的使用情况你就需要用fill_pa
 <?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">
<!-- 单选按钮 必须写明id,不然都可选择 -->
<RadioGroup
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
<RadioButton
android:id = "@+id/radiobutton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked = "true"
android:text = "男"
/>
<RadioButton
android:id = "@+id/radiobutton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text = "女"
/>
</RadioGroup> </LinearLayout>

我们可以发现这三个button并没有将整个屏幕占据,而是根据内容适配大小。

我们在button2里面添加一个属性  android:layout_weight="1" ,发现布局变成这样了:

我们发现这次屏幕被三个button占据了,而且第一个和第三个button还是保持与内容适配大小,而第二个button而占据了剩余屏幕空间。

我们对上面的情况进行讲解:

1、我们只有在button2使用了layout_weight属性,并赋值为1;但是button1和button2并没有使用这个属性,根据API可以知道,他们的layout_weight属性等于0。

2、LinearLayout如果显式包含layout_weight属性时,会measure两次;第一次将正常计算三个button的宽高,第二次将结合layout_weight的值分配剩余的空间。

  通俗点来总结:Android系统先按照你设置的3个Button高度Layout_height=wrap_content,给你分配好他们3个的高度,然后会把剩下来的屏幕空间全部赋给Button2,因为只有他的权重值是1,这也是为什么Button2占了那么大的一块空间。

最新文章

  1. 自己写的几个android自定义组件
  2. &quot;2016-10-06T12:09:18.303+0800&quot;
  3. 《C和指针》 读书笔记 -- 第7章 函数
  4. SYSAUX表空间使用率高问题处理
  5. Alpha冲刺Day9
  6. 设备树..ing
  7. Azure Ubuntu18.04安装lxde桌面记录,Windows远程连接Ubuntu18.04(Linux)
  8. JavaScript -基础- 函数与对象(四) BOM 对象
  9. [转]You Could Become an AI Master Before You Know It. Here’s How.
  10. logrotate: 管理日志文件
  11. C++类默认函数
  12. MBR:主引导记录:
  13. Django 连接redis方法
  14. nexus7 升级失败后手动刷系统
  15. javascript的数据检测总结
  16. Leetcode题解之Container With Most Water
  17. 经典算法--冒泡排序(Java)
  18. Java网络编程一:基础知识详解
  19. C++学习之【使用位操作符求素数分析】
  20. MySQL 0 学习

热门文章

  1. PHP与redis的操作
  2. 封装vue-resource http请求
  3. 零基础逆向工程34_Win32_08_线程控制_CONTEXT结构
  4. python列表生成式、列表推导式
  5. C#中生成随机数的几种方法
  6. 2017.10.18 微机原理与接口----汇编语言语法和DOS功能调用
  7. P2341 [HAOI2006]受欢迎的牛
  8. 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列
  9. System.TimeDate
  10. web之HTTP协议