An open API service indexing awesome lists of open source software.

https://github.com/creageek/un-material-tab

(deprecated) Custom tab layout which can be used as a material TabLayout alternative and contains basic functionality which Google's TabLayout has.
https://github.com/creageek/un-material-tab

android android-library custom-view java kotlin material-design tablayout tabs

Last synced: 18 days ago
JSON representation

(deprecated) Custom tab layout which can be used as a material TabLayout alternative and contains basic functionality which Google's TabLayout has.

Awesome Lists containing this project

README

          

# (deprecated) un-material-tab library

I don't have time to maintain this. I basically wrote this small library in a rush, without tests, while working on my own project as a beginner. As a result, there's a lot of things that aren't that great as well as the missing features. Don't really know if I would have some time to finish it completely.

I'd recommend you to use the official TabLayout from Google or another 3rd party library.

If someone wants to pick up where I left off, make a fork of this, notify me and I'll link to your repo here.


A customizable alternative of TabLayout from Support Design library which provides almost the same functionality.

## Currently working on
- [x] `RoundTabLayout#onTabSelected` & `RoundTabLayout#onTabReselected` callbacks
- [x] reducing number of GPU view updates
- [ ] new tab animations

If you have any suggestions - feel free to open an issue.

## How to add?
I. In your `build.gradle` file add the following dependency:
```
dependencies {
compile 'com.ruslankishai:unmaterialtabs:0.1a'
}
```
II. Declare `RoundTabLayout` inside your `layout.xml` file:
```xml

```
III. Declare `RoundTabLayout` with `ViewPager` in your 'class.java':
```java
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);

//set adapter to your ViewPager
viewPager.setAdapter(new TabPagerAdapter(getFragmentManager()));

RoundTabLayout tabLayout = (RoundTabLayout) findViewById(R.id.roundTabLayout);
tabLayout.setupWithViewPager(viewPager);
```
IV. Override you `getPageTitle` method in your ViewPager’s adapter to return tab title.
```java
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "First item";
...
}
}
```
## How to customize?
I. In your `layout.xml` file you can set a few attributes to `RoundedTabLayout`:
* `android:background`
* This attribute works just like usual `background` attribute (reference to a color).
* `app:accent`
* This attribute allows you to set accent color for tab selection, stroke and text (reference to a color).
* `app:cornerRadius`
* This attribute sets the tab corner radius. Possible values are:
* `circle` (default)
* `rounded`
* `rectangle`
* value in px from `0` to `50`

II. In your `class.java` you can set some values to customize specific tab:
* Use `RoundTab#setIcon` method to change icon. You can get `RoundTab` object via `RoundTabLayout#getTab` method which accept tab index as parameter. To enable tab icon, you should also use `RoundTab#setHasIcon`.
```java

//after initializing RoundTabLayout and ViewPager
RoundTab tab = tabLayout.getTab(0);
Drawable icon = getResources().getDrawable(R.drawable.globe);
tab.setIcon(icon);
//enable icon in current tab
tab.setHasIcon(true);

//repeat this code for another tabs

```
* To disable tab stroke use `RoundTab#setHasStroke` method.
```java

//after initializing RoundTabLayout and ViewPager
RoundTab tab = tabLayout.getTab(0);
tab.setHasStroke(true);

```
* To change corners radius use `RoundTab#setCornerRadius` which accept values from `0` to `50` as a parameter.
```java

//after initializing RoundTabLayout and ViewPager
RoundTab tab = tabLayout.getTab(0);
tab.setCornerRadius(35);

```
* To change tab text use `RoundTab#setText` which accept `String` as a parameter.
```java

//after initializing RoundTabLayout and ViewPager
RoundTab tab = tabLayout.getTab(0);
tab.setText(“Usage example”);

```
## Where is un-material-tab demo app?
The `app` works just as an example of usage with different options. Will be uploaded to Play Store sooner.

## What about contributions?
This is my first public repo and first library so I’m trying to keep this code as much clean and well-commented as I can.
Feel free to contribute :)

## License
```
Copyright (C) 2017 Ruslan Kishai

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.
```