Skip to content

Commit 3ae17bc

Browse files
author
Vadim Polezhaev
committed
Adding support for uppercase text
1 parent 35f78a6 commit 3ae17bc

9 files changed

Lines changed: 66 additions & 9 deletions

File tree

app/build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ android {
2121

2222
dependencies {
2323
implementation fileTree(dir: 'libs', include: ['*.jar'])
24+
implementation project(':appcompaticonbuttonlibrary')
2425
implementation 'androidx.appcompat:appcompat:1.1.0'
26+
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
2527
testImplementation 'junit:junit:4.12'
26-
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
27-
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
28+
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
29+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
2830
}

app/src/main/AndroidManifest.xml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
12
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
24
package="com.swrmedia.appcompaticonbutton">
35

46
<application
@@ -7,5 +9,17 @@
79
android:label="@string/app_name"
810
android:roundIcon="@mipmap/ic_launcher_round"
911
android:supportsRtl="true"
10-
android:theme="@style/AppTheme" />
11-
</manifest>
12+
android:theme="@style/AppTheme"
13+
tools:ignore="GoogleAppIndexingWarning">
14+
<activity
15+
android:name=".MainActivity"
16+
android:windowSoftInputMode="adjustPan">
17+
<intent-filter>
18+
<action android:name="android.intent.action.MAIN" />
19+
20+
<category android:name="android.intent.category.LAUNCHER" />
21+
</intent-filter>
22+
</activity>
23+
</application>
24+
25+
</manifest>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.swrmedia.appcompaticonbutton;
2+
3+
import androidx.appcompat.app.AppCompatActivity;
4+
5+
import android.os.Bundle;
6+
7+
public class MainActivity extends AppCompatActivity {
8+
9+
@Override
10+
protected void onCreate(Bundle savedInstanceState) {
11+
super.onCreate(savedInstanceState);
12+
setContentView(R.layout.activity_main);
13+
}
14+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
android:layout_width="match_parent"
6+
android:layout_height="match_parent"
7+
android:orientation="vertical"
8+
tools:context=".MainActivity">
9+
10+
<com.swrmedia.appcompaticonbuttonlibrary.AppCompatIconButton
11+
android:layout_width="match_parent"
12+
android:layout_height="wrap_content"
13+
android:background="@color/colorAccent"
14+
android:gravity="center"
15+
android:text="@string/app_name"
16+
android:textColor="@android:color/white"
17+
app:ib_iconAlign="left_of_title"
18+
app:ib_iconSrc="@android:drawable/ic_lock_idle_alarm"
19+
app:ib_textAllCaps="true" />
20+
</LinearLayout>

appcompaticonbuttonlibrary/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ dependencies {
2929

3030
implementation 'androidx.appcompat:appcompat:1.1.0'
3131
testImplementation 'junit:junit:4.12'
32-
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
33-
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
32+
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
33+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
3434
}

appcompaticonbuttonlibrary/src/main/java/com/swrmedia/appcompaticonbuttonlibrary/AppCompatIconButton.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.graphics.drawable.BitmapDrawable;
1212
import android.graphics.drawable.Drawable;
1313
import android.util.AttributeSet;
14+
import android.util.Log;
1415

1516
import androidx.annotation.ColorInt;
1617
import androidx.annotation.Dimension;
@@ -26,6 +27,7 @@ public class AppCompatIconButton extends AppCompatButton {
2627
private Rect srcRect;
2728
private Rect destRect;
2829

30+
private boolean textAllCaps;
2931
@Dimension
3032
private int iconPadding;
3133
@Dimension
@@ -44,8 +46,6 @@ private enum Align {
4446

4547
private Align direction;
4648

47-
48-
4949
public AppCompatIconButton(Context context) {
5050
this(context, null);
5151
}
@@ -63,6 +63,8 @@ public AppCompatIconButton(Context context, AttributeSet attrs, int defStyle) {
6363
private void applyStyles(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
6464
TypedArray typedArray = context.obtainStyledAttributes(attrs,
6565
R.styleable.AppCompatIconButton, defStyleAttr, R.style.AppCompatIconButtonStyle);
66+
textAllCaps = typedArray.getBoolean(R.styleable.AppCompatIconButton_ib_textAllCaps,
67+
false);
6668
iconPadding = typedArray.getDimensionPixelSize(
6769
R.styleable.AppCompatIconButton_ib_iconPadding, 0);
6870
iconSize = typedArray.getDimensionPixelSize(
@@ -113,6 +115,9 @@ private void init() {
113115
paint.setColorFilter(new PorterDuffColorFilter(iconColor, PorterDuff.Mode.SRC_ATOP));
114116
srcRect = new Rect(0, 0, icon.getWidth(), icon.getHeight());
115117
}
118+
if (textAllCaps) {
119+
setText(getText().toString().toUpperCase());
120+
}
116121
destRect = new Rect();
117122
}
118123

appcompaticonbuttonlibrary/src/main/res/values/attrs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<enum name="left_of_title" value="2" />
1313
<enum name="right_of_title" value="3" />
1414
</attr>
15+
<attr name="ib_textAllCaps" format="boolean" />
1516
<attr name="ib_style" format="reference" />
1617
</declare-styleable>
1718

appcompaticonbuttonlibrary/src/main/res/values/styles.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<resources>
33

44
<style name="AppCompatIconButtonStyle">
5+
<item name="ib_textAllCaps">false</item>
56
<item name="ib_iconColor">@android:color/white</item>
67
<item name="ib_iconSize">@dimen/icon_button_icon_size</item>
78
<item name="ib_iconPadding">@dimen/icon_button_icon_padding</item>

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ allprojects {
1818
repositories {
1919
google()
2020
jcenter()
21-
21+
maven { url 'https://jitpack.io' }
2222
}
2323
}
2424

0 commit comments

Comments
 (0)