精华内容
下载资源
问答
  • android显示布局边界查看布局

    万次阅读 2017-02-08 18:24:48
    安卓开发者查看布局边界的步骤: 设置 - 开发人员选项 - (勾选)显示布局界限 立马就可以看到屏幕上,很多线条 红色:一个view的上边,下边,左边,右边 边界线 蓝色:一个view的角,比如长方形的四个角 粉红...

    安卓开发者查看布局边界的步骤:

    设置 - 开发人员选项 - (勾选)显示布局界限

    立马就可以看到屏幕上,很多线条

    红色:一个view的上边,下边,左边,右边 边界线

    蓝色:一个view的角,比如长方形的四个角

    粉红色:margin系列的,比如layout_marginLeft 、layout_marginBottom

    (注意:padding系列的,没有边界线,也没有颜色,不容易看出来)

    观察布局边界线,有助于我们在布局的时候,不知道控件在哪里,不知道控件的具体位置的,可以明确的看到我们的控件在哪里。还有助于我们准确的布局控件

    有时候出现一些空白空隙,或者控件重叠的情况,打开布局边界,一看就明白了。




    展开全文
  • 支持相对布局、线性布局、帧布局,看来更像是FrameLayout 、LinearLayout、`RelativeLayout·三者的结合体,并且比这三者更强大的是实现了百分比布局。大家都知道安卓碎片严重,使用百分比适配,那么将彻底解决适配...
    本章节将分为两个模块给大家推送,觉得不错的可以关注下哦

    介绍

    Android ConstraintLayout是谷歌推出替代PrecentLayout的组件。

    支持相对布局、线性布局、帧布局,看来更像是FrameLayout 、LinearLayout、`RelativeLayout·三者的结合体,并且比这三者更强大的是实现了百分比布局。

    大家都知道安卓碎片严重,使用百分比适配,那么将彻底解决适配问题

    总结:我最近也是刚学,学完之后,发现这个布局已经将上述的所有布局的特点全部融合在一起了,使用起来简单方便的不要不要的,就是学习的属性有点多啊。

    不过,多也是正常的,毕竟融合了五大布局的所有特点,学完这个布局,各种界面UI都难不倒我们了

    添加依赖

    implementation 'com.android.support.constraint:constraint-layout:1.1.3'

    我使用的是Android Studio3.0.1版本,已经自动导入了,默认使用的就是这个布局

    属性及对应的方法

    我们先了解一下一些基本的概念

    47792d9148f32249bd99734eb2879ac6.png


    这里提一下,start和left其实都是指控件的左边,end和right都事指控件的右边

    基本属性

    注意,这里的属性都得使用命名空间来才能使用

    宽高属性与之前的layout相同,wrap_contentmatch_parent但除此之外,还多出了一种,名为match contraint

    实际上,这个多出来的相当于0dp,如果之前使用过LinearLayout的权重的话,应该对0dp有印象.

    这里,约束布局应该是继承了Linearlayout的特性,之后我们设置权重与Linearlayout的操作也是类似,具体的请往后面看,这可是实现了百分比布局的强大布局。

    属性值为控件id

    • layout_constraintLeft_toLeftOf 当前控件的左边依赖于属性控件的左边
    • layout_constraintLeft_toRightOf 当前控件的左边依赖于属性控件的右边
    • layout_constraintRight_toLeftOf
    • ayout_constraintRight_toRightOf
    • layout_constraintTop_toTopOf
    • layout_constraintTop_toBottomOf
    • layout_constraintBottom_toTopOf
    • layout_constraintBottom_toBottomOf
    • layout_constraintBaseline_toBaselineOf 当前的控件基线与属性控件的基线对齐
    • layout_constraintStart_toEndOf
    • layout_constraintStart_toStartOf
    • layout_constraintEnd_toStartOf
    • layout_constraintEnd_toEndOf

    示例:

    37910d05f6a4a6b038c30f8339d12bd0.png

    dea0830ad052097802c68294e6325930.png
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        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">
        <Button
            android:id="@+id/btnA"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"/>
        <Button
            android:id="@+id/btnB"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="B"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toEndOf="@id/btnA"/>
    </android.support.constraint.ConstraintLayout>

    A左边依赖总布局的左边,顶部则是依赖总布局的顶部,B则是左边依赖于A的右边,顶部依赖父布局的顶部

    其他的就不一一列举了,举一反三,挺容易的

    mragin 边距

    只有在设置了依赖,之后设置边距才会效果

    这个属性不需要使用app开头,属于原本的属性

    529331b1673f6c5f2c44c7ace1924ff2.png
    • android:layout_marginStart 设置左边的边距
    • android:layout_marginEnd
    • android:layout_marginLeft
    • android:layout_marginTop
    • android:layout_marginRight
    • android:layout_marginBottom

    例如:

    d7cfe234e1a86912906aec54f979a38e.png
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
    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">
    
    <Button
        android:id="@+id/btnA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="50dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
    <Button
        android:id="@+id/btnB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="60dp"
        android:text="B"
        app:layout_constraintStart_toEndOf="@id/btnA"/>
    </android.support.constraint.ConstraintLayout>

    示例:

    使控件B与A垂直对齐

    B的左边依赖A的左边,B的右边依赖A的右边即可

    53da77fc9158701ded676ab294643196.png
    <?xml version="1.0" encoding="utf-8"?>
        <android.support.constraint.ConstraintLayout
            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">
        
            <Button
                android:id="@+id/btnA"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="124dp"
                android:layout_marginTop="16dp"
                android:text="A"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"/>
        
            <Button
                android:id="@+id/btnB"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginEnd="8dp"
                android:layout_marginTop="8dp"
                android:text="B"
                app:layout_constraintEnd_toEndOf="@+id/btnA"
                app:layout_constraintStart_toStartOf="@+id/btnA"
                app:layout_constraintTop_toBottomOf="@+id/btnA"/>
                 </android.support.constraint.ConstraintLayout>

    辅助类或属性使用

    1. Barrier 屏障 控件

    b8c4740fe226b6b09af5e9a668fb6b3e.png
    <android.support.constraint.Barrier
            android:id="@+id/barrier"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:barrierDirection="right"
            app:constraint_referenced_ids="TextView1,TextView2" />

    app:barrierDirection为屏障所在的位置,可设置的值有:bottom、end、left、right、start、top

    app:constraint_referenced_ids为屏障引用的控件,可设置多个(用“,”隔开)

    2. Gruop 组 控件

    Group可以把多个控件归为一组,方便隐藏或显示一组控件,举个例子:

    <android.support.constraint.Group
            android:id="@+id/group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="invisible"
            app:constraint_referenced_ids="TextView1,TextView3" />

    3. Placeholder 占位符 控件

    设置好占位符控件的位置,之后调用setContent,把指定id的控件放在占位符的位置

    app:content=

    4. Guideline 辅助线 控件

    可以使用这个控件达到百分比布局的效果,或者是当前的控件没有符合条件的参照物的情况使用

    Guideline还有三个重要的属性,每个Guideline只能指定其中一个:

    • layout_constraintGuide_begin,指定左侧或顶部的固定距离,如100dp,在距离左侧或者顶部100dp的位置会出现一条辅助线
    • layout_constraintGuide_end,指定右侧或底部的固定距离,如30dp,在距离右侧或底部30dp的位置会出现一条辅助线
    • layout_constraintGuide_percent,指定在父控件中的宽度或高度的百分比,如0.8,表示距离顶部或者左侧的80%的距离。
    • android:orientation 设置垂直或者是水平

    Guideline是隐藏的,不用我们进行多余的设置,虽然外面在预览面板可以死看到它的存在

    例子:使一个按钮的长度占满屏幕一半

    c54c9153d9cb0924e8be96fc850ef43b.png
    <android.support.constraint.Guideline
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/guidelineBegin"
            app:layout_constraintGuide_percent="0.5"
            android:orientation="vertical"/>
    
        <Button
            android:text="Button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/button"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guidelineBegin"
            app:layout_constraintTop_toTopOf="parent" />

    Radio 比例 属性

    方便快捷调整控件的宽高比,结合Guideline使用更佳

    例子:

    5c6fc5eb6de2a393dfffd1d52b984bbe.png

    app:layout_constraintDimensionRatio

    想要宽度与总布局一样,但高度是宽度的三分之一

    宽高比为3:1

    <Button
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintDimensionRatio="3:1"/>

    Chain 链 属性

    可以把这个当做成一个加强版的LinearLayout

    b20ad0703460bdaca4d17b425edb39ec.png

    由上图,很好的知道了A与B的约束,A的左边是父控件的左边,右边则是B,B的左边是A,B的右边的是父控件的右边

    chainstyle有三种属性,分别是spread,spread_inside,pack,效果如下图

    • spread 元素将展开(默认)
    • spread_inside 元素展开,但链的端点不会展开
    • pack 链中的元素将包裹在一起。子控件的水平或垂直方向的偏置bias属性会影响包裹中元素的位置

    f1603d552fa34694724ad7519e3276d0.png

    剩下的两种则是通过添加属性实现的

    weighted chain是在spread chain的基础上,而packed chain with bias则是在weight chain的基础上

    style为spread的,使用layout_constraintHorizontal_weightlayout_constraintVertical_weight来设置weigh权重

    style为pack的,使用layout_constraintHorizontal_biaslayout_constraintVertical_bias进行偏移设置,属性值0-1,也是百分比,改第一个元素

    这里需要说明的是,除了水平,还可以是垂直排列,不过,不能通过属性来更改,而是通过约束来更改,把左边改为顶端,右边改为底部

    如果是水平的,使用属性layout_constraintHorizontal_chainStyle进行chainstyle属性的更改

    垂直的则是使用layout_constraintVertical_chainStyle

    例子:

    三个按钮平分宽度(只需要将宽度设置为0dp就可以达到目的)

    <Button
            android:id="@+id/btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintEnd_toStartOf="@id/btn1"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>
        <Button
            android:id="@+id/btn1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintStart_toEndOf="@id/btn"
            app:layout_constraintEnd_toStartOf="@id/btn2"/>
        <Button
            android:id="@+id/btn2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Button"
            app:layout_constraintStart_toEndOf="@id/btn1"
            app:layout_constraintEnd_toEndOf="parent"/>

    总结:大概就是这样的,有问题欢迎留言讨论;

    展开全文
  • Android布局调整

    2015-12-23 17:08:12
    安卓布局时调了很久无法解决的样式,...最后打开了手机上的“显示界面边界” 发现了,一个非常简单的问题 线性布局中 horizontal 为这个布局,如果想设置,居左,居右的距离时,记得设置 权重layout_weight 上代码 ...

    在安卓布局时调了很久无法解决的样式,
    最后打开了手机上的“显示界面边界”
    发现了,一个非常简单的问题

    线性布局中 horizontal 为这个布局,如果想设置,居左,居右的距离时,记得设置 权重layout_weight

    上代码

    <?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="wrap_content"
        android:background="@color/main_bg_white"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginTop="10dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
            <!-- horizontal 为这个布局,如果想设置,居左,居右的距离时,记得设置 权重layout_weight -->
            <RelativeLayout
                android:id="@+id/rl_left"
                android:layout_width="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="15dp"
                android:layout_height="wrap_content"
                android:background="@color/main_bg_white"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/iv_left"
                    android:layout_width="90dp"
                    android:layout_height="51dp"
                    android:layout_alignParentLeft="true"
                    android:src="@drawable/zhinan1" />
    
                <TextView
                    android:id="@+id/tv_left"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_toRightOf="@id/iv_left"
                    android:text="测试数据"
                    android:textColor="@color/main_text_black"
                    android:textSize="14sp" />
    
                <TextView
                    android:id="@+id/tv_left2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignRight="@id/tv_left"
                    android:layout_below="@id/tv_left"
                    android:layout_marginLeft="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/iv_left"
                    android:ellipsize="end"
                    android:maxEms="5"
                    android:maxLines="2"
                    android:text="测试数据"
                    android:textColor="@color/me_text_grey"
                    android:textSize="11sp" />
            </RelativeLayout>
            <!-- horizontal 为这个布局,如果想设置,居左,居右的距离时,记得设置 权重layout_weight -->
            <RelativeLayout
                android:id="@+id/rl_right"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="12dp"
                android:background="@color/main_bg_white"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/iv_right"
                    android:layout_width="90dp"
                    android:layout_height="51dp"
                    android:layout_alignParentLeft="true"
                    android:layout_gravity="center_horizontal"
                    android:src="@drawable/zhinan2" />
    
                <TextView
                    android:id="@+id/tv_right"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_toRightOf="@id/iv_right"
                    android:text="测试数据"
                    android:textColor="@color/main_text_black"
                    android:textSize="14sp" />
    
                <TextView
                    android:id="@+id/tv_right2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignRight="@id/tv_right"
                    android:layout_below="@id/tv_right"
                    android:layout_marginLeft="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/iv_right"
                    android:ellipsize="end"
                    android:maxEms="5"
                    android:maxLines="2"
                    android:text="测试数据"
                    android:textColor="@color/me_text_grey"
                    android:textSize="11sp" />
            </RelativeLayout>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_marginTop="20dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
    
            <!-- horizontal 为这个布局,如果想设置,居左,居右的距离时,记得设置 权重layout_weight -->
            <RelativeLayout
                android:id="@+id/rl_left_bottom"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="15dp"
                android:background="@color/main_bg_white"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/iv_left_bottom"
                    android:layout_width="90dp"
                    android:layout_height="51dp"
                    android:layout_alignParentLeft="true"
                    android:src="@drawable/zhinan3" />
    
                <TextView
                    android:id="@+id/tv_left_bottom"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_toRightOf="@id/iv_left_bottom"
                    android:text="测试数据"
                    android:textColor="@color/main_text_black"
                    android:textSize="14sp" />
    
                <TextView
                    android:id="@+id/tv_left2_bottom"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignRight="@id/tv_left_bottom"
                    android:layout_below="@id/tv_left_bottom"
                    android:layout_marginLeft="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/iv_left_bottom"
                    android:ellipsize="end"
                    android:maxEms="5"
                    android:maxLines="2"
                    android:text="测试数据"
                    android:textColor="@color/me_text_grey"
                    android:textSize="11sp" />
            </RelativeLayout>
            <!-- horizontal 为这个布局,如果想设置,居左,居右的距离时,记得设置 权重layout_weight -->
            <RelativeLayout
                android:layout_weight="1"
                android:id="@+id/rl_right_bottom"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="12dp"
                android:background="@color/main_bg_white"
                android:orientation="vertical" >
    
                <ImageView
                    android:id="@+id/iv_right_bottom"
                    android:layout_width="90dp"
                    android:layout_height="51dp"
                    android:layout_alignParentLeft="true"
                    android:src="@drawable/zhinan4" />
    
                <TextView
                    android:id="@+id/tv_right_bottom"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_toRightOf="@id/iv_right_bottom"
                    android:text="测试数据"
                    android:textColor="@color/main_text_black"
                    android:textSize="14sp" />
    
                <TextView
                    android:id="@+id/tv_right2_bottom"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignRight="@id/tv_right_bottom"
                    android:layout_below="@id/tv_right_bottom"
                    android:layout_marginLeft="8dp"
                    android:layout_marginTop="5dp"
                    android:layout_toRightOf="@id/iv_right_bottom"
                    android:ellipsize="end"
                    android:maxEms="5"
                    android:maxLines="2"
                    android:text="测试数据"
                    android:textColor="@color/me_text_grey"
                    android:textSize="11sp" />
            </RelativeLayout>
        </LinearLayout>
    
    </LinearLayout>
    展开全文
  • 所以我们需要编写上述几个xml布局页面,分别分析每部分的布局内容及要求:  顶部标题栏:此栏需有app的标题,标题大小颜色自定义且居中显示,背景色自选  中间内容页面:由于本app是仿微信界面,所以设置了四个...

    功能要求

    1.页面具有标题
    2.具有四个页面,页面具有底部选择框,同时具有选择事件,当点击选择事件的时候进行页面切换
    3.页面内容不超出边界且清晰

    思路分析

    该微信界面由三部分组成

    • 页面顶部标题栏(top.xml)
    • 中间内容页面
    • 底部导航栏(bottom.xml)
      所以我们需要编写上述几个xml布局页面,分别分析每部分的布局内容及要求:
       顶部标题栏:此栏需有app的标题,标题大小颜色自定义且居中显示,背景色自选
       中间内容页面:由于本app是仿微信界面,所以设置了四个页面,分别显示不同的内容
       底部导航栏:四个图标,单击可以切换中间内容页面,故该布局文件中包含四个ImageButton,界面切换部分需要用Fragment实现

    设计过程

    • 1.资源文件导入
       把图片等资源文件导入到/app/res/drawble 目录下
      在这里插入图片描述

    • 2.布局设计
       此仿微信界面分为三部分,标题栏,中间内容页面,底部栏,故分部分进行设计。

    标题栏
     添加一个TextView,填入文字,定义大小和颜色,设置背景颜色,有关于文字居中,我们要修改和添加一些配置信息。
     在linearlayout中,我们修改gravity所对应的配置信息为center
     在TextView中,我们修改layout_gravity所对应的配置信息为center_horizontal
    在这里插入图片描述

    在这里插入图片描述

    背景颜色等颜色设置,都可以直接点击左边的小方块进行设置

    App名称是通过调用values中的strings.xml里的值设置的

    中间页面

    主页面设置为四个界面,即四个xml布局文件,每一个里面都设置一个TextView,居中显示即可

    底部栏

    设置一个水平放置的LinearLayout,在其下放入四个垂直的LinearLayout,每个垂直的LinearLayout下放置一个imagebutton后,再放一个TextView,慢慢拖动设置到满意的程度
     修改layout_width,layout_weight,orientation直到达到预期效果

    activity_main主布局文件

    在activity_main里,首先在最外面设置垂直,配置orientation就行,配置以v开头就行。然后是将标题栏和底部栏放入,用include导入top和bottom,然后中间放入一个FrameLayout就可以了。

    3.java文件编写

    由于布局文件以及设置编写好了,我们需要编写控制代码逻辑的Java文件
    这里最重要的是Fragment,这里我们需要对每一个Fragment(对应一个xml布局文件)新建一个Fragment类

    • ChatFragment.java
    • FriendsFragment.java
    • CommFragment.java
    • SettingFragment.java
      在这里插入图片描述

    按上图配置,每一个类相当于对应一个布局,这样我们就将四个布局所对应的xml文件就变成了四个类对象,从而可以正常的调用它。
    在MainActivity.java中控制操作逻辑
    首先要new出各个界面(Fragment)的对象,还有有一个FragmentManager管理所有的Fragment

    private Fragment chatFragment = new ChatFragment();
    private Fragment friendsFragment = new FriendsFragment();
    private Fragment commFragment = new CommFragment();
    private Fragment settingFragment = new SettingFragment();
    

    并且创建一个Fragment管理变量

    private FragmentManager fragmentManager;

    新建一个initFragment函数用以给Fragment页面初始化,在此函数中,将此前定义个4个Fragment变量使用fragmentManager添加到activity_mainw文件的Framelayout布局中

    private void initFragment(){
            fragmentManager = getSupportFragmentManager();
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.add(R.id.content,chatFragment);
            transaction.add(R.id.content,friendsFragment);
            transaction.add(R.id.content,commFragment);
            transaction.add(R.id.content,settingFragment);
            transaction.commit();
        }
    

    对bottom.xml下的4个imagebutton控件和4个linearlayout控件建立8个变量

    private LinearLayout chatLayout;
        private LinearLayout friendsLayout;
        private LinearLayout commLayout;
        private LinearLayout settingLayout;
    
        private ImageButton chatImageButton;
        private ImageButton friendsImageButton;
        private ImageButton commImageButton;
        private ImageButton settingImageButton;
    

    编写initview函数,将此8个变量和bottom中的8个控件联系起来,先使用findviewbyid函数找到对应的控件,再把它强制转换成对应的变量类型即可

    
    private void initView(){
            chatLayout = findViewById(R.id.chatLayout);
            friendsLayout = findViewById(R.id.friendsLayout);
            commLayout = findViewById(R.id.commLayout);
            settingLayout = findViewById(R.id.settingLayout);
    
            chatImageButton = findViewById(R.id.chatImageButton);
            friendsImageButton = findViewById(R.id.friendsImageButton);
            commImageButton = findViewById(R.id.commImageButton);
            settingImageButton = findViewById(R.id.settingImageButton);
    
            chatText = findViewById(R.id.chatText);
            friendsText = findViewById(R.id.friendsText);
            commText = findViewById(R.id.commText);
            settingText = findViewById(R.id.settingText);
        }
    
    

    将所有的textview隐藏起来,通过点击每个图标给界面选择函数发送不同的参数,从而实现界面的选择,在界面选择函数中需要先将4个界面对应的textview控件都隐藏

    private void hideFragment(FragmentTransaction transaction){
            transaction.hide(chatFragment);
            transaction.hide(friendsFragment);
            transaction.hide(commFragment);
            transaction.hide(settingFragment);
        }
    

    设置监听程序

    public class MainActivity extends AppCompatActivity implements View.OnClickListener
    

    点击图标后颜色变化,此方法的方法体的开始需要一个resetBtn函数,此函数作用为把xml文件中的4个图标都初始化为浅色的图标,然后等待选则的时候,再将对应的图片改为深色

    
     @SuppressLint("ResourceAsColor")
        private void resetBtn(){
            chatImageButton.setImageResource(R.drawable.chat);
            friendsImageButton.setImageResource(R.drawable.friends);
            commImageButton.setImageResource(R.drawable.comm);
            settingImageButton.setImageResource(R.drawable.setting);
    
            chatText.setTextColor(this.getResources().getColor(R.color.nopickText));
            friendsText.setTextColor(this.getResources().getColor(R.color.nopickText));
            commText.setTextColor(this.getResources().getColor(R.color.nopickText));
            settingText.setTextColor(this.getResources().getColor(R.color.nopickText));
        }
    
    
    

    仅仅对bottom的四个linerlayout监听

       private void initEvent(){
            chatLayout.setOnClickListener(this);
            friendsLayout.setOnClickListener(this);
            commLayout.setOnClickListener(this);
            settingLayout.setOnClickListener(this);
        }
    
    

    结果页面
    在这里插入图片描述

    在这里插入图片描述
    代码地址
    https://gitee.com/fyl253711android/Android_project.git

    展开全文
  • 实验一安卓开发微信页面设计 功能要求: 1.页面具有标题 2.具有四个页面,页面具有底部选择框,同时具有选择事件,当点击选择事件的时候进行页面切换 3.页面内容不超出边界且清晰 思路分析: 该微信界面由三部分组成...
  • 所以我们需要编写上述几个xml布局页面,分别分析每部分的布局内容及要求:  顶部标题栏:此栏需有app的标题,标题大小颜色自定义且居中显示,背景色自选  中间内容页面:由于本app是仿微信界面,所以设置了四个...
  • 安卓手机的【开发者选项】初始状态都是隐藏,然后点点点,就会出来,可以设置显示边界布局。 android部分机型中使用浏览器进行电话拨打,无法拨打分机号的情况,这个是因为各手机厂商实现的浏览器标准不一致导致的...
  • 在Android View视图是没有边界的,Canvas是没有边界的,只不过我们通过绘制特定的View时对 Canvas对象进行了一定的操作,例如 : translate(平移)、...通常我们所理解的一个Layout布局文件只是该视 图的显示区域,
  • 可以打开 开发者选项中的显示布局边界,页面元素很多的情况下布局是一整块的是h5的,布局密密麻麻的是原生控件。页面有布局的是原生的否则为h5页面。(仅针对安卓手机试用)如下图所示:     3、
  • 判断一个APP页面是原生的还是H5页面

    千次阅读 2016-12-20 10:24:09
    可以打开 开发者选项中的显示布局边界,页面元素很多的情况下布局是一整块的是h5的,布局密密麻麻的是原生控件。页面有布局的是原生的否则为h5页面。(仅针对安卓手机试用)如下图所示:     3、
  • 1、通过下拉刷新(IOS和安卓) 如果下拉刷新页面的时候,...如果页面没有刷新功能,可以通过在手机中设置开发者选项,打开【显示布局边界】,就能看到所以控件的布局了,如果页面中包含图片、文字等信息,但是这个区...
  • 1.看布局边界(在手机侧观察)...显示布局边界,页面元素很多的情况下布局是一整块的是h5的,布局密密麻麻的是原生控件。页面有布局的是原生的,否则为h5页面。(仅针对安卓手机试用)如下图所示: 参考连接: ...
  • 包括显示布局边界、显示 GPU 过度绘制、显示布局更新、强制 GPU 渲染、显示 GPU 视图更新、显示指针位置、严格模式、不保留活动、不锁定屏幕。每个工具可以通过长按工具图标添加快捷方式到桌面,以后连打开 App 都省...
  • ① 进入开发者中心,找到"显示布局边界"选项并开启 ② 这时我们就可以看到所有原生组件的边界和边距都被显示出来了,而网页的部分则没有 ③ 进入一个自己想看的app,就可以看到该app哪部分是原生的哪部分是网页的 ...
  • 显示布局边界 界面有* 有色边框线 的是原生的,没有 有色边框线 *是网页加载的。 原生是针对系统开发,例如安卓系统的就需要使用webveiw做浏览器视图,只能运行于Android上,混合式可以使用cordova类似的功能软件,...
  • app研究--持续更新

    2020-06-01 07:58:20
    界面呈现大体分两种: 用html+css绘制页面,运行原理是打包工具创建一个只有一个或多个Activity的安卓应用,这个Activity上就只有...一个很容易区分的方法是,打开手机的设置-开发人员设置-显示布局边界,然后打开...
  • 方法1、手机开发者选项开启显示布局边界,页面有布局的是native否则为h5页面(仅针对安卓手机试用) 方法2、长按页面,如果出现文字选择、粘贴功能的是H5页面,否则是native页面,我在我们自己的App里面试了一下是...
  • 显示布局边界,打勾。 页面元素如果是一整块的是h5的,布局密密麻麻的是原生控件。 2. 看加载的方式 -(比较准确) 如过在打开新页面导航栏下面有一条加载条的话,这个页面就是H5页面,如果没有就是原生的。 3.看断网...
  • appium(七)测试webview

    千次阅读 2017-03-24 17:27:56
    自动化测试操作的流程基本都是一样的: 1、搭建环境 2、查找元素 3、断言 ...通过边界布局判断,(开发者选项----显示边界布局),如果页面是一整块的布局,说明是H5实现,如果有很多控件显示则是原生
  • 顶部鼠标右键菜单,可动态控制时间CPU+左上角面板+左下角面板+右上角面板+右下角面板的显示和隐藏,支持恢复默认布局。 工具栏可以放置多个小图标和关闭图标。 左侧右侧可拖动拉伸,并自动记忆宽高位置,重启后恢复...
  • <div><p>这是很久很久之前想写的东西,拖了五六个月,没有动笔,现今补齐,内容有些多,对初学者有用,错误之处,望指出。 理解作用域 理解作用域链是Js编程中一个必须要...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

安卓显示布局边界