Giter Site home page Giter Site logo

clean-simple-calendar's Introduction

Build Status

clean-simple-calendar

Small simple android calendar implementation

Time-Square is the ultimate calendar but a but hard to customize The alternative Caldroid is based on really unclean code, hard to change, hard to test. Also it is used custom selection logic instead of using selection and disabled states of the views.

This one is

  • a simple view, not a fragment
  • item layout xml provided by developer, not included
  • supports i8n by different starting days of week
  • support selection (style via xml selected state)
  • shows last/first days of surrounding months where needed (row count configurable, style via xml disabled-state)
  • marks today
  • supports adding custom view holder and adapters but not needed (see styled_sample)
  • no multiselect
  • no right-to-left (in progress)

It is just the month widget, no navigation or similar.

testCompile 'de.jodamob.android:clean-simple-calendar:1.0'
 

Quick start:

Add the 'CalendarWidget' to your layout. Call

calendarWidget.set(
	new CalendarBuilder(R.layout.calendar_item_layout, R.layout.calendar_header_layout));

or set more implicit the shown month:

calendarWidget.set(
CalendarDataFactory.getInstance(Locale.getDefault()).create(date, ROWS),
	new CalendarBuilder(R.layout.calendar_item_layout, R.layout.calendar_header_layout));

where date is a date for the month to show and ROWS an int naming the number of rows to be shown (6 is default, 4 should be minimum)

done.

The layouts must have the following items:

the header layout (day names) must contain one textView with id 'R.id.day' (see the 'ids.xml') the content (day numbers) must contain: a 'TextView' with id 'R.id.date_text' and any kind of 'View' with id 'R.id.custom_cell' that will be used to set selected state (and disabled state for start/end of non-current month date)

example:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@id/custom_cell"
    android:selectable="true"
    android:background="@drawable/custom_calendar_bg_selector"
	android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@id/date_text"
        android:duplicateParentState="true"
		android:layout_width="wrap_parent"
	    android:layout_height="wrap_parent"/>
</RelativeLayout>

Screenshot from simple_sample (US Locale) alt tag

Screenshot from simple_sample (GERMAN Locale) alt tag

Screenshot from styled_sample with custom fields and selection alt tag

Screenshot from simple_sample (Hebrew language) alt tag

Licensed under MIT license (c) 2015 Danny Preussler

clean-simple-calendar's People

Contributors

dpreussler avatar

Watchers

Jagadeesh B avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.