This project has been superseded by SuperSLiM, a layout manager for RecyclerView. I strongly recommend using SuperSLiM and not StickyGridHeaders.

Overview

StickyGridHeaders

Replacement project at SuperSLiM

This repository is abandoned and will no longer see any development or support.

The replacement SuperSLiM is an implementation of a layout manager on top of RecyclerView. It offers extensible layouts per section, and multiple display modes for headers, including sticky headers. Really, it is better in every way with superior performance, configuration, and is not a hack of ListView, which should completely sell you on it.

StickyGridHeaders is an Android library for Android 2.3+ that provides a GridView that shows items in sections with headers. By default the section headers stick to the top like the People app in Android 4.x but this can be turned off. StickyGridHeaders also automatically sizes its rows to the largest item in the row.

StickyGridHeaders has been designed to be adapter compatible with, and was inspired by, StickyListHeaders.

Roadmap

Version 1.0.1 has been released!

Development on master will now focus on bringing the headers into the view hierarchy and resolving dpad navigation issues.

Usage

Sticky Grid Headers can be added to your project as an Android Library Project, a Jar library, or using Maven.

StickyGridHeadersGridView replaces the use of a GridView in your application and is used in the same manner. To get all the functionality your ListAdapter must implement one of either StickyGridHeadersBaseAdapter or StickyGridHeadersSimpleAdapter. The choice of the implementation allows you to decide between the 'Simple' version which automatically does some housework to enable the grid sections and headers, or the 'Base' version which leaves that work to you so you can implement a specific solution for your data set.

Including in your Project

This library can be used as a .jar file included in the libs/ directory of your project. The latest version is available from Google Drive.

For Maven users, StickyGridHeaders can now be easily included by specifying it as a dependency:

<dependency>
  <groupId>com.tonicartos</groupId>
  <artifactId>stickygridheaders</artifactId>
  <version>1.0.1</version>
</dependency>

Compatibility

The simple adapter interface has the same signature as StickyListHeadersAdapter so if you are using the StickyListHeaders library your adapters are already ready for StickyGridHeaders.

Example

Example App Portrait Screenshots The example source code is included in this repository.

License

Copyright 2013 Tonic Artos

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • ClassCastException

    ClassCastException

    Hi!

    I have been using StickyGridHeaders for a month, and it works great, but randomly when I load the gridview I get an exception like this.

    0 java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to com.tonicartos.widget.stickygridheaders.StickyGridHeadersBaseAdapterWrapper$FillerView 1 at com.tonicartos.widget.stickygridheaders.StickyGridHeadersBaseAdapterWrapper.getFillerView(StickyGridHeadersBaseAdapterWrapper.java:261) 2 at com.tonicartos.widget.stickygridheaders.StickyGridHeadersBaseAdapterWrapper.getView(StickyGridHeadersBaseAdapterWrapper.java:177) 3 at android.widget.AbsListView.obtainView(AbsListView.java:2597) 4 at android.widget.GridView.makeAndAddView(GridView.java:1344) 5 at android.widget.GridView.makeRow(GridView.java:344) 6 at android.widget.GridView.fillSpecific(GridView.java:546) 7 at android.widget.GridView.layoutChildren(GridView.java:1243) 8 at android.widget.AbsListView.onLayout(AbsListView.java:2431) 9 at android.view.View.layout(View.java:14482) 10 at android.view.ViewGroup.layout(ViewGroup.java:4469) 11 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 12 at android.view.View.layout(View.java:14482) 13 at android.view.ViewGroup.layout(ViewGroup.java:4469) 14 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669) 15 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 16 at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 17 at android.view.View.layout(View.java:14482) 18 at android.view.ViewGroup.layout(ViewGroup.java:4469) 19 at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 20 at android.view.View.layout(View.java:14482) 21 at android.view.ViewGroup.layout(ViewGroup.java:4469) 22 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 23 at android.view.View.layout(View.java:14482) 24 at android.view.ViewGroup.layout(ViewGroup.java:4469) 25 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 26 at android.view.View.layout(View.java:14482) 27 at android.view.ViewGroup.layout(ViewGroup.java:4469) 28 at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 29 at android.view.View.layout(View.java:14482) 30 at android.view.ViewGroup.layout(ViewGroup.java:4469) 31 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 32 at android.view.View.layout(View.java:14482) 33 at android.view.ViewGroup.layout(ViewGroup.java:4469) 34 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 35 at android.view.View.layout(View.java:14482) 36 at android.view.ViewGroup.layout(ViewGroup.java:4469) 37 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669) 38 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 39 at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 40 at android.view.View.layout(View.java:14482) 41 at android.view.ViewGroup.layout(ViewGroup.java:4469) 42 at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021) 43 at android.view.View.layout(View.java:14482) 44 at android.view.ViewGroup.layout(ViewGroup.java:4469) 45 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 46 at android.view.View.layout(View.java:14482) 47 at android.view.ViewGroup.layout(ViewGroup.java:4469) 48 at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669) 49 at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527) 50 at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 51 at android.view.View.layout(View.java:14482) 52 at android.view.ViewGroup.layout(ViewGroup.java:4469) 53 at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 54 at android.view.View.layout(View.java:14482) 55 at android.view.ViewGroup.layout(ViewGroup.java:4469) 56 at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2147) 57 at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1966) 58 at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1179) 59 at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4861) 60 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 61 at android.view.Choreographer.doCallbacks(Choreographer.java:562) 62 at android.view.Choreographer.doFrame(Choreographer.java:532) 63 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 64 at android.os.Handler.handleCallback(Handler.java:725) 65 at android.os.Handler.dispatchMessage(Handler.java:92) 66 at android.os.Looper.loop(Looper.java:137) 67 at android.app.ActivityThread.main(ActivityThread.java:5293) 68 at java.lang.reflect.Method.invokeNative(Native Method) 69 at java.lang.reflect.Method.invoke(Method.java:511) 70 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 71 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 72 at dalvik.system.NativeStart.main(Native Method)

    May I'm doing something wrong, but is weird I cannot replicate this error easily, just happens.

    Thanks in advance for any help!

    bug 
    opened by pablojacobi 37
  • ImageViews receive onDetachedFromWindow premuturely

    ImageViews receive onDetachedFromWindow premuturely

    I've investigated using this library in concert with the Image loading capabilities provided in the sample code from Google found here: http://developer.android.com/training/displaying-bitmaps/

    When I tested it out, I observed that when using this implementation of the GridView with items that use the RecyclingImageView from the samples (which are used to preserve memory,especially on 2.3.x) the onDetachedFromWindow method on the RecyclingImageView is called prematurely. This prevents images from displaying their bitmaps properly. I haven't pinpointed the root cause in the library, but I can confirm this does not occur with the standard Grid view. I traced it down to being related to how the getView method works when wrapping the standard wrapper: https://github.com/TonicArtos/StickyGridHeaders/blob/master/Library/src/com/tonicartos/widget/stickygridheaders/StickyGridHeadersBaseAdapterWrapper.java#L158

    It looks like the measuring for each row is instantiating the wrapped Adapter's item perhaps more than once, leading to the detached calls.

    Has anyone else seen this, or have any better understanding than I do of why this happens? If you need a sample project, I could probably whip that up (I basically just modified the BitmapFun sample to use this library).

    bug 
    opened by proskd 33
  • android:verticalSpacing problems...

    android:verticalSpacing problems...

    Hi! Great library but I have found a bug when using android:verticalSpacing...

    On a normal GridView android:verticalSpacing only affect the space between list items and not the top spacing of the first item and bottom spacing of the last item... so in StickyGridHeadersGridView the items in the first row after a sticky header and the items on the row above a header should be affected in the same way... or what do you say about that? :)

    Best regards!

    wontfix 
    opened by alirahimpour89 15
  • Headers now support touch events in children

    Headers now support touch events in children

    This allows for onclick and ontouch events to be given to say a button within the headers. All code regarding the header on click and long clicks is still fully intact.

    opened by caguilar187 12
  • Scroll is not so smooth as on regular GridView

    Scroll is not so smooth as on regular GridView

    I've noticed the issue when i tried to apply StickyGridHeadersGridView to show image thumbnails in the grid with categories like this image The scroll is slower and not so smooth in compare with regular GridView. It happens even if i use standard adapter without headers. Is there any workarounds for this? Thanks

    scroll 
    opened by httpdispatch 11
  • Catch click on ImageButton at Header Item.

    Catch click on ImageButton at Header Item.

    Hi again, I have StickyGridHeadersGridView, this gridView have Header with ImageButton on it. I try to catch ImageButton Click Event by using ImageButton.setOnClickListener but it is not working. I see header have method setOnHeaderClickListener, but it isn't suitable for me. So I have a question: Where are ability to catch ImageButton click event?

    Thanks.

    enhancement 
    opened by vitaliylodoss 11
  • Position in onItemClick is position + 1 row

    Position in onItemClick is position + 1 row

    Inside "onItemClick(AdapterView<?> Grid_sdcard, View v, int position, long id) {}" I get the position plus one row, I"m guessing it's because the header takes on row. I would minus one row but I'm using android:numColumns="auto_fit" in my xml and the method to get the number of items in a row is only starting at API 16. What can I do to get the correct position?

    info required 
    opened by ayziaa 8
  • Error supporting platform 19

    Error supporting platform 19

    When I use columns on tablets, I am facing this issue randomly on Nexus 7 :

    com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView$RuntimePlatformSupportException: Error supporting platform 19. at com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView.attachHeader(StickyGridHeadersGridView.java:1049) at com.tonicartos.widget.stickygridheaders.StickyGridHeadersBaseAdapterWrapper.getView(StickyGridHeadersBaseAdapterWrapper.java:183) at android.widget.AbsListView.obtainView(AbsListView.java:2255) at android.widget.GridView.makeAndAddView(GridView.java:1345) at android.widget.GridView.makeRow(GridView.java:345) at android.widget.GridView.fillUp(GridView.java:386) at android.widget.GridView.fillGap(GridView.java:262) at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5143) at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4254) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView.attachHeader(StickyGridHeadersGridView.java:1039) ... 17 more Caused by: java.lang.NullPointerException at android.view.View.dispatchAttachedToWindow(View.java:12600) at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2458) ... 20 more

    Any idea about this problem ?

    opened by SylvainRousson 7
  • Crash on getView

    Crash on getView

    Stack track--

    Stack trace -

    02-05 13:31:58.114: E/AndroidRuntime(1724): at com.tonicartos.widget.stickygridheaders.StickyGridHeadersBaseAdapterWrapper.getView(StickyGridHeadersBaseAdapterWrapper.java:193) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.AbsListView.obtainView(AbsListView.java:2263) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.GridView.makeAndAddView(GridView.java:1345) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.GridView.makeRow(GridView.java:345) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.GridView.fillDown(GridView.java:287) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.GridView.fillFromTop(GridView.java:421) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.GridView.layoutChildren(GridView.java:1233) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.AbsListView.onLayout(AbsListView.java:2091) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.LinearLayout.onLayout(LinearLayout.java:1436) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.ScrollView.onLayout(ScrollView.java:1468) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at couk.jenxsol.parallaxscrollview.views.ParallaxScrollView.onLayout(ParallaxScrollView.java:277) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1589) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:374) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.View.layout(View.java:14817) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewGroup.layout(ViewGroup.java:4631) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1987) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1744) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.Choreographer.doCallbacks(Choreographer.java:574) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.Choreographer.doFrame(Choreographer.java:544) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.os.Handler.handleCallback(Handler.java:733) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.os.Handler.dispatchMessage(Handler.java:95) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.os.Looper.loop(Looper.java:136) 02-05 13:31:58.114: E/AndroidRuntime(1724): at android.app.ActivityThread.main(ActivityThread.java:5017) 02-05 13:31:58.114: E/AndroidRuntime(1724): at java.lang.reflect.Method.invokeNative(Native Method) 02-05 13:31:58.114: E/AndroidRuntime(1724): at java.lang.reflect.Method.invoke(Method.java:515) 02-05 13:31:58.114: E/AndroidRuntime(1724): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 02-05 13:31:58.114: E/AndroidRuntime(1724): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)

    opened by sahilmiglani 7
  • Texts not Showing on Header

    Texts not Showing on Header

    Hello, i'm trying to put some some texts in header, but it seems that they are not being draw at all. When i put a ImageView it works OK, but every widget with some text in it does not show the text part. For instace, tried with TextView and Button. With a button, the button shows up but the text inside it does not show.The xml used in header is shown below:

    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout
        android:id="@+id/rl_veh_item"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="4dp"
        android:paddingLeft="4dp"
        android:paddingRight="4dp"
        android:paddingBottom="0dp">
    
    
        <!--<ImageView-->
        <!--android:id="@+id/iv_veh_photo"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="156dp"-->
        <!--android:scaleType="fitXY"-->
            <!--android:layout_centerInParent="true"-->
         <!--android:src="@drawable/icon_default_photo"/>-->
        <TextView
            android:id="@+id/tv_veh_title"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:gravity="center"
            android:layout_centerInParent="true"
            android:textColor="#ffffff"
            android:textAllCaps="true"
            android:ellipsize="end"
            android:singleLine="true"
            android:scrollHorizontally="true"
            android:maxLines="1"
            android:maxLength="19"
            android:text="some thextes"/>
    </RelativeLayout>
    
    info required 
    opened by paulovap 7
  • Visual artifact: fast scroll appearing on the left side

    Visual artifact: fast scroll appearing on the left side

    I enable fast scrolling for your grid view. When scrolling completely down, the fast scrolling indicator jumps to the left side. Any idea what could be causing this? Something between 1.0.1 and your current latest snapshot must have changed.

    See also https://github.com/UweTrottmann/SeriesGuide/issues/316 for a screenshot.

    Background: I updated to your latest snapshot to fix some drawing issues (black patches/backgrounds) when building with gradle for Android 4.3.

    bug confirmed 
    opened by UweTrottmann 7
Android layout decorators : Injecting custom attributes in layout files, Using decorators to get rid of unnecessary class explosion with custom views

Decor Decor is a library that applies decorators to Android layout with additional attributes without the need to extend and create a custom View for

Mouna Cheikhna 304 Nov 25, 2022
Name UI states, navigate between them, remember where you've been.

Deprecated Flow had a good run and served us well, but new use is strongly discouraged. The app suite at Square that drove its creation is in the proc

Square 2.8k Dec 29, 2022
A new canvas drawing library for Android. Aims to be the Fabric.js for Android. Supports text, images, and hand/stylus drawing input. The library has a website and API docs, check it out

FabricView - A new canvas drawing library for Android. The library was born as part of a project in SD Hacks (www.sdhacks.io) on October 3rd. It is cu

Antwan Gaggi 1k Dec 13, 2022
A MaterialChipSetWidget is used to hold multiple chipsets 🤩 and each chipset has multiple values. 🔖

A MaterialChipSetWidget is used to hold multiple chipsets ?? and each chipset has multiple values. ??

Justin George 38 Sep 21, 2022
We are not Gif makers, We are developers

We are not Gif makers, We are developers Recently me and my friend came across this downloading animation on Dribble: https://dribbble.com/shots/18878

Thibault Guégan 1.7k Nov 28, 2022
The CustomCalendarView provides an easy and customizable calendar to create a Calendar. It dispaly the days of a month in a grid layout and allows to navigate between months

Custom-Calendar-View To use the CustomCalendarView in your application, you first need to add the library to your application. You can do this by eith

Nilanchala Panigrahy 113 Nov 29, 2022
FogView is a android library that can show fog on any layout and the fog removes when user rubs it.

Fog View Android Library Min SDK 8 (Android 2.2–2.2.3 Froyo) Screnshots How to use If you want use this library, you can download project and import i

Chetan Kaushik 631 Dec 31, 2022
[] A simple way to "badge" any given Android view at runtime without having to cater for it in layout

Android ViewBadger A simple way to "badge" any given Android view at runtime without having to cater for it in layout. Note: If your aim is to replica

Jeff Gilfelt 3k Nov 28, 2022
Shadow layout, shadow view for android.

ShadowViewHelper Shadow layout, shadow view for android. How to use: It's very simple to use. Gradle(Check newest version): compile 'com.github.wangji

WangJie 777 Dec 30, 2022
JetCompose - Blur Effect in Android 12 with motion layout carousel

JetCompose Blur Effect in Android 12 with motion layout carousel

Vikas Singh 4 Jul 27, 2022
Janishar Ali 2.1k Jan 1, 2023
Drag and drop to reorder items in a list, grid or board for Android. Based on RecyclerView. Also supports swiping items in a list.

DragListView DragListView can be used when you want to be able to re-order items in a list, grid or a board. It also supports horizontal swiping of it

Magnus Woxblom 658 Nov 30, 2022
Android library for multiple snapping of RecyclerView

MultiSnapRecyclerView Gradle dependencies { implementation 'com.github.takusemba:multisnaprecyclerview:x.x.x' } Features This is an Android Libra

TakuSemba 2.5k Jan 4, 2023
Easily create complex recyclerview adapters in android

?? Due to the nature of my job and growing popularity of Jetpack Compose, I lack the motivation to keep this project alive. Recyclerview is one of the

Riyaz Ahamed 823 Jan 6, 2023
Just a Wheel——A easy way to setEmptyView to ListView、GridView or RecyclerView etc..

中文说明在这里 TEmptyView Just a Wheel—— A easier way to setEmptyView. Without having to write xml file every time. It supports AdapterView(ListView,GridView

Barry 454 Jan 9, 2023
A simple launcher which displays all the apps on a RecyclerView trying to KISS

A simple launcher which displays all the apps on a RecyclerView trying to KISS

Alex Allafi 1 Jun 17, 2022
Ms-goals - Project developed using Kotlin and Spring

Goals microservice Kotlin + Spring CRUD application. You can find the following

Gabriel Babler 0 Jan 28, 2022
Drawing App: A simple drawing application that allows the user to draw using a pencil or using shapes

Drawing-App Drawing app is a simple drawing application that allows the user to

Nada Feteiha 1 Oct 5, 2022
This project created just for help developer who want to and ability of read VISA, UNION PAY, HUMO, ATTO and some other cards data read.

If you enjoy my content, please consider supporting what I do. Thank you. By me a Coffee To get a Git project into your build: Step 1. Add the JitPack

Fozilbek Imomov 1 Oct 15, 2022