diff --git a/app/src/main/java/org/solovyev/android/views/dragbutton/DirectionTextView.java b/app/src/main/java/org/solovyev/android/views/dragbutton/DirectionTextView.java index 9923c6a8..0e997b71 100644 --- a/app/src/main/java/org/solovyev/android/views/dragbutton/DirectionTextView.java +++ b/app/src/main/java/org/solovyev/android/views/dragbutton/DirectionTextView.java @@ -5,6 +5,7 @@ import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.PointF; import android.graphics.Rect; +import android.graphics.Typeface; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextPaint; @@ -21,7 +22,7 @@ import java.util.Map; public class DirectionTextView { - public static final float DEF_ALPHA = 0.55f; + public static final float DEF_ALPHA = 0.4f; public static final float DEF_SCALE = 0.4f; @NonNull @@ -89,6 +90,7 @@ public class DirectionTextView { @NonNull private final View view; private final float minTextSize; + private float fixedTextHeight = 0; @NonNull private final PointF position = new PointF(-1, -1); @NonNull @@ -125,7 +127,16 @@ public class DirectionTextView { paint.set(base); paint.setColor(color); paint.setAlpha(intAlpha()); + paint.setTypeface(Typeface.DEFAULT); + + // pre-calculate fixed height + paint.setTextSize(Math.max(base.getTextSize() * DEF_SCALE, minTextSize)); + paint.getTextBounds("|", 0, 1, bounds); + fixedTextHeight = bounds.height(); + + // set real text size value paint.setTextSize(Math.max(base.getTextSize() * scale, minTextSize)); + invalidate(true); } @@ -188,7 +199,7 @@ public class DirectionTextView { case down: position.x = view.getWidth() - paddingLeft - bounds.width(); if (direction == DragDirection.up) { - position.y = paddingTop + bounds.height(); + position.y = paddingTop + fixedTextHeight; } else { position.y = view.getHeight() - paddingBottom; } @@ -201,14 +212,14 @@ public class DirectionTextView { position.x = view.getWidth() - paddingRight - bounds.width(); } final int availableHeight = view.getHeight() - verticalPaddings; - position.y = paddingTop + availableHeight / 2 + bounds.height() / 2; + position.y = paddingTop + availableHeight / 2 + fixedTextHeight / 2; break; } } @NonNull public String getValue() { - return value; + return visible ? value : ""; } public void setValue(@NonNull String value) { diff --git a/app/src/main/res/layout/cpp_app_button_round_brackets.xml b/app/src/main/res/layout/cpp_app_button_round_brackets.xml index 06dac7c6..0f7d104a 100644 --- a/app/src/main/res/layout/cpp_app_button_round_brackets.xml +++ b/app/src/main/res/layout/cpp_app_button_round_brackets.xml @@ -30,6 +30,6 @@ style="?attr/cpp_button_style_digit" a:text="( )" c:directionTextDown=")" - c:directionTextLeft="(…)" + c:directionTextLeft="(∙)" c:directionTextUp="(" tools:ignore="HardcodedText" /> \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 8781d513..2fc75e09 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -10,7 +10,7 @@ 1px 2dp 9dp - 0.3 + 0.45 1dp 4dp diff --git a/app/src/main/res/values/theme_material_light.xml b/app/src/main/res/values/theme_material_light.xml index 06664524..6a4dd8f7 100644 --- a/app/src/main/res/values/theme_material_light.xml +++ b/app/src/main/res/values/theme_material_light.xml @@ -28,6 +28,7 @@