php网站底部文件,网站建设如何财务处理,简单企业网站模板免费,网站后台网址后缀一、布局 认识了解一下Android中的布局#xff0c;分别是: LinearLayout(线性布局)#xff0c;RelativeLayout(相对布局)#xff0c;TableLayout(表格布局)#xff0c; FrameLayout(帧布局)#xff0c;AbsoluteLayout(绝对布局)#xff0c;GridLayout(网格布局) 等。 二、…一、布局 认识了解一下Android中的布局分别是: LinearLayout(线性布局)RelativeLayout(相对布局)TableLayout(表格布局) FrameLayout(帧布局)AbsoluteLayout(绝对布局)GridLayout(网格布局) 等。 二、LinearLayout详解
1.常见属性
1id值: android:idid/ id相当于一个标识方便后期写代码时找到
android:idid/linearlayuot
2布局宽度android:layout_width布局高度android:layout_height 这两个属性一般放在一起写且必须设定里面的值可以任意进行调整可以是与父组件相同的match_parent也可以是适应自身大小的wrap_content还可以是各种数值如50dp100dp其中dp是一种屏幕密度的抽象单位。
// match_parent:与父组件相同
// wrap_content:适应自身大小android:layout_widthmatch_parent
android:layout_heightwrap_content
3外边距android:layout_margin内边距android:padding 外边距android:layout_margin整体距离android:layout_marginTop顶部距离android:layout_marginLeft / android:layout_marginStart左部距离android:layout_marginRight / android:layout_marginEnd右部距离android:layout_marginBottom底部距离
内边距android:padding 整体距离 android:paddingTop顶部距离android:paddingLeft / android:paddingStart左部距离android:paddingRight / android:paddingEnd右部距离android:paddingBottom底部距离
标注左右的距离有两种表现形式以左为例一种是Left一种是Start这里主要是跟版本有关4.2以上用Start代替Left同理右部。
4定位andorid:orientation
简单明了就是控件怎么布局它有两个属性水平的horizontal垂直的vertical。
!-- android:orientationvertical 垂直--LinearLayoutandroid:layout_widthmatch_parentandroid:layout_height400dpandroid:orientationverticalandroidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundcolor/blue/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundcolor/pink/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#00FF99/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#AA6699//LinearLayout !-- android:orientationhorizontal 水平--LinearLayoutandroid:layout_widthmatch_parentandroid:layout_height400dpandroid:orientationhorizontalandroidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundcolor/blue/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundcolor/pink/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#00FF99/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#AA6699//LinearLayout 在一个布局中只能有一种排列方式要么垂直要么水平如果想多实现可以多用几个布局分模块的进行布局管理 。
5对齐方式andorid:gravity
对齐方式就是布局中的控件所在的位置我们现在主要的阅读方式为从左向右从上向下所以再添加控件时会自动的放于左上角切记第一条属性是写在大布局中的而不是单个的控件中以此段代码为例第二个可以放置在控件中调整位置在此处我们以第一种方式为例因为内容大同小异只是编写的位置不同罢了 LinearLayoutandroid:layout_widthmatch_parentandroid:layout_height400dpandroid:orientationverticalandroid:gravitycenterandroidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundcolor/blue/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:backgroundcolor/pink/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#00FF99/androidx.appcompat.widget.AppCompatButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:background#AA6699//LinearLayout
对齐方式andorid:gravitycenter整体居中andorid:gravityleft / andorid:gravitystart / andorid:gravitytop左部andorid:gravityright / andorid:gravityend右部andorid:gravitybottom底部andorid:gravitycenter_horizontal水平居中andorid:gravitycenter_vertical垂直居中
2.权重andorid:layout_weight
权重就是控件所占剩余布局的比例问题怎样分配问题 LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontalandroid:background#e50c0cLinearLayoutandroid:layout_width0dpandroid:layout_heightfill_parentandroid:background#ffc0cbandroid:layout_weight1 /LinearLayoutandroid:layout_width0dpandroid:layout_heightfill_parentandroid:background#0000ffandroid:layout_weight1 //LinearLayout
权重andorid:layout_weight”“的值是可以随便定义的里面的数字相当于权重设置的数字相加为整个布局的大小比如以上代码为例第一个控件权重为1第二个也为1也就是说整个布局大小为2两个控件各占1数字可以任意更改控件也可以任意添加重要的是美观如下图 将一个控件的权重设置为2则它 占整个布局的三分之二 0dp的设置一般情况都是因为权重问题这样便可以按照自己所设置的比例进行显示水平布局设置width垂直布局设置height0dp。
前面提到了权重是占剩余部分的占据比例是因为我们在设计时不一定都是0dp有可能提前某个控件设置了长度或是高度这时如果我们再用权重属性分开的就是整个布局剩下没有占用的部分例如同样的代码我将第一个LinearLayout的宽度提前设置了200dp。现在来看看效果 LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontalandroid:background#e50c0cLinearLayoutandroid:layout_width200dpandroid:layout_heightfill_parentandroid:background#ffc0cbandroid:layout_weight1 /LinearLayoutandroid:layout_width0dpandroid:layout_heightfill_parentandroid:background#0000ffandroid:layout_weight2 //LinearLayout 第一个控件先占了整个布局的一部分剩余的部再进行分割。
附加Java代码中设置weight属性
1.在activity_main.xml文件中新建一个LinearLayout LinearLayoutandroid:idid/abcandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontalandroid:background#e50c0c/LinearLayout
2.在 MainActivity.java 文件中设置weight
package com.example.example;import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity { Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 创建一个 LinearLayout 对象LinearLayout linearLayout new LinearLayout(MainActivity.this);// 设置 LinearLayout 的布局方向为垂直linearLayout.setOrientation(LinearLayout.VERTICAL);// 创建一个按钮对象Button button new Button(MainActivity.this);button.setText(点击);// 创建 LinearLayout.LayoutParams 对象并设置相应参数LinearLayout.LayoutParams layoutParams new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);layoutParams.weight 1.0f;// 将布局参数应用到按钮上button.setLayoutParams(layoutParams);// 将按钮添加到 LinearLayout 中linearLayout.addView(button);LinearLayout rootLayout findViewById(R.id.abc);// 将 LinearLayout 添加到活动的根布局中rootLayout.addView(linearLayout);}
} 3.运行应用 即可 3. 为LinearLayout设置分割线
1直接在布局中添加一个view
LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationverticalandroid:layout_marginTop16dpandroid:layout_marginBottom16dp!-- 添加一条细线作为背景 --Viewandroid:layout_widthmatch_parentandroid:layout_height1dpandroid:background#000000 /!-- 在这里添加其他布局元素 --/LinearLayout 2第二种是使用LinearLayout的一个divider属性
直接为LinearLayout设置分割线 这里就需要自己准备一张线的图片了
a. android:divider 设置作为分割线的图片 src/main/res/drawable 下面创建 ktv_line_div.xml 内容为:
?xml version1.0 encodingutf-8?
shape xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:shaperectanglesolid android:color#808080 / !-- 灰色背景 --size android:height1dp / !-- 定义细线高度为1dp --
/shape
b. android:showDividers 设置分割线的位置,none(无),beginning(开始),end(结束),middle(每两个组件间)
c. android:dividerPadding 设置分割线的可以控制分隔线与子视图之间的间距使布局在显示分隔线时具有更灵活的外观效果主要用于 AdapterView如ListView、GridView中的分隔线样式
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/LinearLayout1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:dividerdrawable/ktv_line_divandroid:orientationverticalandroid:showDividersmiddleandroid:dividerPadding10dp Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text按钮1 /Buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text按钮2 //LinearLayout应用之后就可以看到细线 4. 注意事项
使用Layout_gravity的一个很重要的问题
问题内容: 在一个LinearLayout的水平方向中布置两个TextView,想让一个左,一个右,怎么搞?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontal TextViewandroid:layout_widthwrap_contentandroid:layout_height200dpandroid:layout_gravityleftandroid:background#ffc0cbandroid:gravitycenterandroid:text~~~~~~~pink...... /TextViewandroid:layout_widthwrap_contentandroid:layout_height200dpandroid:layout_gravityrightandroid:background#0000ffandroid:gravitycenterandroid:text~~~~~~~blue...... /
/LinearLayout
运行结果: 看到这里可能会想在外层LinearLayout加个 android:gravityleft 的属性,然后设置第二个 TextView的 android:layout_gravity 为 android:layout_gravity“right
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontal android:gravityleft TextViewandroid:layout_widthwrap_contentandroid:layout_height200dpandroid:layout_gravityleftandroid:background#ffc0cbandroid:gravitycenterandroid:text~~~~~~~pink...... /TextViewandroid:layout_widthwrap_contentandroid:layout_height200dpandroid:layout_gravityrightandroid:background#0000ffandroid:gravitycenterandroid:text~~~~~~~blue...... /
/LinearLayout
运行结果没变化: 小编想说当 android:orientationvertical 时 只有水平方向的设置才起作用垂直方向的设置不起作用。 即 left right center_horizontal 是生效的。 当 android:orientationhorizontal 时 只有垂直方向的设置才起作用水平方向的设置不起作用。 即 top bottom center_vertical 是生效的。 当改成 android:orientationvertical 时看一下效果 综上可看出仍然没有实现想要对结果像这种情况是建议使用 RelativeLayout相对布局 非要用LinearLayout的解决的话也可以:
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/LinearLayout1android:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationhorizontal TextViewandroid:layout_width0dpandroid:layout_height200dpandroid:layout_weight1android:background#0000ffandroid:gravitycenterandroid:textO(∩_∩)O哈哈~ /Viewandroid:layout_width0dpandroid:layout_height0dpandroid:layout_weight1 /TextViewandroid:layout_width130dpandroid:layout_height200dpandroid:background#ffc0cbandroid:gravitycenterandroid:text(*^__^*) 嘻嘻…… //LinearLayout
在两个 TextView 之间添加了一个空的 View并将它的 layout_weight 设置为 1。这样第二个 TextView 就会被挤到右边并且两个 TextView 以及中间的 View 将占据同样的空间实现了水平方向上的靠右对齐。 三、总结