Android 基础之View中常见的API

1、简述

该篇文章记录本人学习和使用Android过程中的关于View的各种我所不熟悉但是很有用的api,都会包含一些小的案例。

2. xml布局中重要api

2.1 clip家族属性

2.1. clipToPadding

用途与用法: 常用于RecyclerView中(默认为true),设置是否要让该view的父布局去裁剪掉该view的paddinng值。

案例分析:如下图所示假若RecyclerView的xml中设置了android:paddingTop = "10dp",clipToPadding默认为ture,即裁剪掉padding值,那么和我们日常观察的一样,就是仍然有上边距进行滑动;clipToPadding为 false ,那么之前空白的padding会顶上去的,往下拉padding又会呈现了

2.1.2 android:clipChildren

用途:允许子View超出父View

使用注意事项:  1、只需在根节点设置android:clipChildren为false即可,默认为true,

                             注意:一定是在布局文件的根节点设置
                         2、可以通过android:layout_gravity控制超出的部分如何显示。
                         3、android:clipChildren的意思:是否限制子View在其范围内,我们将其值设置为false后那么当子控件的高度高于父控件时也会完全显示,而不会被压缩。

题外话:和前端里面的 overflow: hidden; 有点类似,默认就是android:clipChildren = "true",很显然前端里面要想显示超出父组件的区域可以使用auto,那么相应的 android里面可以将裁剪超出内容属性置为false.

效果:左边为弹出dialog的效果,右边为xml布局中的预览效果

     

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:clipChildren="false"
    android:layout_height="wrap_content">
    <!-- 注意  clipChildren 根布局 false-->
    <LinearLayout
        android:layout_alignParentBottom="true"
        android:background="#fff"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:clipChildren="false"
        android:layout_height="wrap_content">
        <!-- 注意 clipChildren  = false-->
        <!-- 注意 你裁剪的是哪个布局那么他的父亲布局得有该属性-->
        <LinearLayout
            android:id="@+id/rl_1"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="128dp">
            <android.support.v7.widget.CardView
                android:id="@+id/cd"
                android:layout_gravity="bottom"
                android:layout_marginLeft="10dp"
                android:foreground="?android:attr/selectableItemBackground"
                android:layout_width="120dp"
                android:layout_height="150dp"
                card_view:cardBackgroundColor="#FFFFFF"
                card_view:cardCornerRadius="4dp"
                card_view:cardElevation="2dp"
                card_view:cardUseCompatPadding="true">
                <ImageView
                    android:src="@drawable/shop"
                    android:scaleType="fitXY"
                    android:layout_width="120dp"
                    android:layout_height="match_parent"/>
            </android.support.v7.widget.CardView>
            。。。。。。。
        </LinearLayout>
        <LinearLayout
            android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="45dp">
            。。。。。。。
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

2.2 scrollView中的小技巧

2.2.1 android:fillViewport="true"

开发中一般都设置Linerlayout为ScrollView的唯一子布局,如果没有设置android:fillViewport=”true”,即使给Linerlayout设置了 android:layout_heightt=”match_parent”也是没有作用的,它还是会按照wrap_coent来布局,最后无法铺满全屏。加上该属性就可以让唯一子布局的match_parent生效了。

下图的右侧的3,即为如下的ScrollView包裹的,是否使用 android:fillViewport = "true",会产生如下图的差异

    <ScrollView
        android:fillViewport="true"
        android:layout_width&
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值