转载请注明出处:王亟亟的大牛之路
今天无意中看到个十分好用,而且效果类似于之前写过的QQ没网络的那种呈现方式,这边分享给大家,先贴下效果
控件部分收缩
控件全部收缩
How to use?
主build文件
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
包build文件
dependencies {
compile ‘com.github.cachapa:expandablelayout:1.1‘
}
EC:自行Copy很简单就一个类一个XML 很容易植入
因为是一个试图组,例子中作为根节点的布局来操作,我们使用时看你的需要吧,像这样
<net.cachapa.expandablelayout.ExpandableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/expandable_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:el_duration="1000"
app:el_expanded="true">
<TextView
android:id="@+id/expand_button"
style="@style/TextAppearance.AppCompat.Medium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:windowBackground"
android:elevation="6dp"
android:foreground="?selectableItemBackground"
android:gravity="center"
android:padding="16dp"
android:text="Click here to toggle expansion" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#00b300"
android:clipToPadding="false"
android:elevation="4dp"
android:gravity="center"
android:text="Fixed height"
android:textColor="#fff"
app:layout_expandable="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#00f"
android:gravity="center"
android:text="Fill height"
android:textColor="#fff"
app:layout_expandable="false" />
</net.cachapa.expandablelayout.ExpandableLinearLayout>
因为继承LinearLayout ,所以水平还是垂直看你的需要,其他就没区别了
然后哪个节点需要伸缩,设置下
app:layout_expandable="true"
就行true就是支持,false就是不支持,很简单。
还有2个自定义标签,这里也说下
app:el_duration="1000"
app:el_expanded="true"
一个用于动画设置时间,一个设置可见不可见。
app:el_duration默认 300
app:el_expanded默认 false
大致讲下如何实现,试图组计算位置摆放等操作和普通LinearLayout没什么区别,动画使用ValueAnimator动画来处理的默认动画结束后做 view.setVisibility(GONE) 或者view.setVisibility(View.VISIBLE)操作。
那如何设置动态设置显示or隐藏效果呢?
调用
expandableLayout.toggle();
它会自动判断当前的状态然后走 相应逻辑,使用非常的简单
该项目已收入 :https://github.com/ddwhan0123/Useful-Open-Source-Android
源码地址:https://github.com/cachapa/ExpandableLayout/archive/master.zip
原作者:
时间: 2024-10-11 04:14:41