IconButton
IconButton copied to clipboard
A Button subclass for Android that provides better control over drawable positioning
IconButton for Android
IconButton is an Android button widget that allows you to center both the button's text and an icon.
Android's stock Button
class allows you to assign a Drawable
to the left, right, top, or bottom of a button, but it looks bad if you need to have the button fill the screen:
Installation
For Gradle / Android Studio
Make sure you declare the JCenter repository in your project's build.gradle
:
repositories {
jcenter()
}
Then add a compile-time dependency on this library, adding the dependencies
section to build.gradle
if it doesn't already exist:
dependencies {
compile 'com.githang:com-phillipcalvin-iconbutton:1.0.1@aar'
}
For Old Version
If you're using ADT, clone this repository and import it into your workspace using File - Import. Then add it to your project by right-clicking your project, selecting Properties, then Android, and adding IconButton in the references list at the bottom of the Properties window.
If you're not using ADT, I recommend using this library as a submodule:
git submodule add [email protected]:pnc/IconButton.git
Generate a local.properties
for IconButton:
android update project -n IconButton --path IconButton/IconButton
Then reference the library from your own project.properties
:
android.library.reference.1=IconButton/IconButton
If you already have library references, change the 1
to the appropriate number.
Usage
In your layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/your.project.package"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<!-- ... -->
<com.phillipcalvin.iconbutton.IconButton
android:id="@+id/search"
android:drawableLeft="@drawable/action_search"
android:text="@string/search"
app:iconPadding="10dp" />
The use of app:iconPadding
is optional. It allows you to add padding between the drawable and your text.
Change the text your.project.package
to your own project's package. You don't have to use LinearLayout
, but you do need to make sure to define the namespace definition (xmlns:app="http://schemas.android.com/apk/res/your.project.package"
) appears in the root element.
You can assign either a drawableLeft
or a drawableRight
to the IconButton.
Caveats
IconButton only supports one drawable on the left or right. I'll absolutely accept patches that improve its handling of multiple drawables.
Contributors
Special thanks to:
- @msdx for significant contributions around Android Studio and Gradle support.
- @kaushikgopal for adding left and right drawable support
License
Copyright (c) 2012-2015 Phil Calvin and contributors.
Licensed under the Apache License, Version 2.0
Contains modified source from ParcelHelper, also under the Apache License.