Skip to content

Commit b3acd17

Browse files
pubiqqleticiarossi
authored andcommitted
[MaterialTimePicker] Fix TimePicker appearance for RTL
Resolves #2837 Resolves #2835 Resolves #2836 GIT_ORIGIN_REV_ID=2fa54f683b263c61933469f2bca1cdf81dbddeed Co-authored-by: paulfthomas PiperOrigin-RevId: 466986098
1 parent ccf67f7 commit b3acd17

File tree

8 files changed

+35
-54
lines changed

8 files changed

+35
-54
lines changed

lib/java/com/google/android/material/timepicker/TimePickerView.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import androidx.annotation.Nullable;
3939
import androidx.annotation.StringRes;
4040
import androidx.constraintlayout.widget.ConstraintLayout;
41-
import androidx.constraintlayout.widget.ConstraintSet;
4241
import androidx.core.view.AccessibilityDelegateCompat;
4342
import androidx.core.view.ViewCompat;
4443
import com.google.android.material.button.MaterialButtonToggleGroup;
@@ -257,30 +256,10 @@ public void showToggle() {
257256
protected void onVisibilityChanged(@NonNull View changedView, int visibility) {
258257
super.onVisibilityChanged(changedView, visibility);
259258
if (changedView == this && visibility == VISIBLE) {
260-
updateToggleConstraints();
261259
hourView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
262260
}
263261
}
264262

265-
@Override
266-
protected void onAttachedToWindow() {
267-
super.onAttachedToWindow();
268-
updateToggleConstraints();
269-
}
270-
271-
private void updateToggleConstraints() {
272-
if (toggle.getVisibility() == VISIBLE) {
273-
// The clock display would normally be centered, clear the constraint on one side to make
274-
// room for the toggle
275-
ConstraintSet constraintSet = new ConstraintSet();
276-
constraintSet.clone(this);
277-
boolean isLtr = ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_LTR;
278-
int sideToClear = isLtr ? ConstraintSet.RIGHT : ConstraintSet.LEFT;
279-
constraintSet.clear(R.id.material_clock_display, sideToClear);
280-
constraintSet.applyTo(this);
281-
}
282-
}
283-
284263
@Level
285264
int getCurrentLevel() {
286265
return clockFace.getCurrentLevel();

lib/java/com/google/android/material/timepicker/res/layout-land/material_timepicker.xml

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,46 +16,42 @@
1616
-->
1717
<merge xmlns:android="http://schemas.android.com/apk/res/android"
1818
xmlns:app="http://schemas.android.com/apk/res-auto"
19+
xmlns:tools="http://schemas.android.com/tools"
1920
android:id="@+id/material_timepicker_container"
2021
android:layout_width="wrap_content"
21-
android:layout_height="wrap_content">
22+
android:layout_height="wrap_content"
23+
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
2224

23-
<androidx.constraintlayout.widget.Guideline
24-
android:layout_width="wrap_content"
25+
<androidx.constraintlayout.helper.widget.Flow
26+
android:id="@+id/material_clock_display_and_toggle"
27+
android:layout_width="0dp"
2528
android:layout_height="wrap_content"
26-
android:id="@+id/guideline"
27-
app:layout_constraintGuide_begin="16dp"
28-
android:orientation="horizontal"/>
29+
android:layout_marginTop="20dp"
30+
android:orientation="vertical"
31+
app:constraint_referenced_ids="material_clock_display,material_clock_period_toggle"
32+
app:flow_verticalGap="@dimen/material_clock_period_toggle_vertical_gap"
33+
app:layout_constraintBottom_toBottomOf="parent"
34+
app:layout_constraintStart_toStartOf="parent"
35+
app:layout_constraintTop_toTopOf="parent" />
2936

3037
<include
3138
android:id="@+id/material_clock_display"
3239
android:layout_width="wrap_content"
3340
android:layout_height="wrap_content"
34-
app:layout_constraintBottom_toTopOf="@+id/material_clock_period_toggle"
35-
android:layout_marginTop="4dp"
36-
app:layout_constraintLeft_toLeftOf="parent"
37-
app:layout_constraintVertical_chainStyle="packed"
38-
layout="@layout/material_clock_display"
39-
app:layout_constraintTop_toTopOf="@+id/guideline" />
41+
layout="@layout/material_clock_display" />
4042

4143
<include
4244
android:id="@+id/material_clock_period_toggle"
4345
android:layout_width="0dp"
4446
android:layout_height="wrap_content"
45-
android:layout_marginTop="12dp"
46-
app:layout_constraintVertical_chainStyle="packed"
47-
app:layout_constraintTop_toBottomOf="@+id/material_clock_display"
48-
app:layout_constraintBottom_toBottomOf="parent"
49-
app:layout_constraintLeft_toLeftOf="@+id/material_clock_display"
50-
app:layout_constraintRight_toRightOf="@+id/material_clock_display"
5147
layout="@layout/material_clock_period_toggle_land" />
5248

5349
<com.google.android.material.timepicker.ClockFaceView
5450
android:id="@+id/material_clock_face"
5551
android:layout_width="wrap_content"
5652
android:layout_height="wrap_content"
5753
android:layout_marginStart="@dimen/clock_face_margin_start"
58-
app:layout_constraintStart_toEndOf="@+id/material_clock_display"
54+
app:layout_constraintStart_toEndOf="@+id/material_clock_display_and_toggle"
5955
app:layout_constraintTop_toTopOf="parent" />
6056

6157
</merge>

lib/java/com/google/android/material/timepicker/res/layout-ldrtl/material_textinput_timepicker.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
android:layout_width="@dimen/material_clock_period_toggle_width"
3535
android:layout_height="@dimen/material_clock_period_toggle_height"
3636
android:layout_marginStart="0dp"
37-
android:layout_marginEnd="@dimen/material_clock_period_toggle_margin_left" />
37+
android:layout_marginEnd="@dimen/material_clock_period_toggle_horizontal_gap" />
3838

3939
<include layout="@layout/material_timepicker_textinput_display" />
4040

lib/java/com/google/android/material/timepicker/res/layout/material_clock_display.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,13 @@
1616
-->
1717

1818
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
19-
xmlns:app="http://schemas.android.com/apk/res-auto"
2019
xmlns:tools="http://schemas.android.com/tools"
2120
android:id="@+id/material_clock_display"
2221
android:layout_width="wrap_content"
2322
android:layout_height="wrap_content"
24-
android:layout_marginTop="8dp"
2523
android:layoutDirection="ltr"
2624
android:orientation="horizontal"
2725
android:baselineAligned="false"
28-
app:layout_constraintTop_toTopOf="parent"
29-
app:layout_constraintLeft_toLeftOf="parent"
30-
app:layout_constraintRight_toRightOf="parent"
3126
tools:ignore="UnusedAttribute">
3227

3328
<include

lib/java/com/google/android/material/timepicker/res/layout/material_clock_period_toggle.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,9 @@
2121
android:id="@+id/material_clock_period_toggle"
2222
android:layout_width="@dimen/material_clock_period_toggle_width"
2323
android:layout_height="@dimen/material_clock_period_toggle_height"
24-
android:layout_marginStart="@dimen/material_clock_period_toggle_margin_left"
2524
android:orientation="vertical"
2625
android:contentDescription="@string/material_clock_toggle_content_description"
2726
app:checkedButton="@id/material_clock_period_am_button"
28-
app:layout_constraintStart_toEndOf="@id/material_clock_display"
29-
app:layout_constraintTop_toTopOf="parent"
3027
android:visibility="gone"
3128
app:selectionRequired="true"
3229
app:singleSelection="true">

lib/java/com/google/android/material/timepicker/res/layout/material_textinput_timepicker.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,6 @@
3535
layout="@layout/material_clock_period_toggle"
3636
android:layout_width="@dimen/material_clock_period_toggle_width"
3737
android:layout_height="@dimen/material_clock_period_toggle_height"
38-
android:layout_marginStart="@dimen/material_clock_period_toggle_margin_left" />
38+
android:layout_marginStart="@dimen/material_clock_period_toggle_horizontal_gap" />
3939

4040
</LinearLayout>

lib/java/com/google/android/material/timepicker/res/layout/material_timepicker.xml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,22 @@
1616
-->
1717
<merge xmlns:android="http://schemas.android.com/apk/res/android"
1818
xmlns:app="http://schemas.android.com/apk/res-auto"
19+
xmlns:tools="http://schemas.android.com/tools"
1920
android:id="@+id/material_timepicker_container"
2021
android:layout_width="wrap_content"
21-
android:layout_height="wrap_content">
22+
android:layout_height="wrap_content"
23+
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
24+
25+
<androidx.constraintlayout.helper.widget.Flow
26+
android:id="@+id/material_clock_display_and_toggle"
27+
android:layout_width="0dp"
28+
android:layout_height="@dimen/material_clock_period_toggle_height"
29+
android:orientation="horizontal"
30+
app:constraint_referenced_ids="material_clock_display,material_clock_period_toggle"
31+
app:flow_horizontalGap="@dimen/material_clock_period_toggle_horizontal_gap"
32+
app:layout_constraintEnd_toEndOf="parent"
33+
app:layout_constraintStart_toStartOf="parent"
34+
app:layout_constraintTop_toTopOf="parent" />
2235

2336
<include
2437
android:id="@+id/material_clock_display"
@@ -32,10 +45,10 @@
3245
android:id="@+id/material_clock_face"
3346
android:layout_width="wrap_content"
3447
android:layout_height="wrap_content"
35-
android:layout_marginTop="36dp"
48+
android:layout_marginTop="28dp"
3649
android:layout_gravity="center"
3750
app:layout_constraintStart_toStartOf="parent"
3851
app:layout_constraintEnd_toEndOf="parent"
39-
app:layout_constraintTop_toBottomOf="@+id/material_clock_display" />
52+
app:layout_constraintTop_toBottomOf="@+id/material_clock_display_and_toggle" />
4053

4154
</merge>

lib/java/com/google/android/material/timepicker/res/values/dimens.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
<dimen name="material_clock_display_padding">24dp</dimen>
2020
<dimen name="material_clock_period_toggle_height">96dp</dimen>
2121
<dimen name="material_clock_period_toggle_width">52dp</dimen>
22-
<dimen name="material_clock_period_toggle_margin_left">12dp</dimen>
22+
<dimen name="material_clock_period_toggle_horizontal_gap">12dp</dimen>
23+
<dimen name="material_clock_period_toggle_vertical_gap">12dp</dimen>
2324
<dimen name="material_clock_face_margin_top">44dp</dimen>
2425
<dimen name="clock_face_margin_start">64dp</dimen>
2526
<dimen name="material_timepicker_dialog_buttons_margin_top">24dp</dimen>

0 commit comments

Comments
 (0)