Merge "Hide IME when SearchTextEditor loses focus" into oc-support-26.1-dev
diff --git a/api/26.1.0-SNAPSHOT.txt b/api/26.1.0-SNAPSHOT.txt
index 2de7ede..c0b0862 100644
--- a/api/26.1.0-SNAPSHOT.txt
+++ b/api/26.1.0-SNAPSHOT.txt
@@ -5609,7 +5609,8 @@
method public final int getPickerItemLayoutId();
method public final int getPickerItemTextViewId();
method public int getSelectedColumn();
- method public final java.lang.CharSequence getSeparator();
+ method public final deprecated java.lang.CharSequence getSeparator();
+ method public final java.util.List<java.lang.CharSequence> getSeparators();
method public float getVisibleItemCount();
method public void onColumnValueChanged(int, int);
method public void removeOnValueChangedListener(android.support.v17.leanback.widget.picker.Picker.PickerValueListener);
@@ -5620,6 +5621,7 @@
method public final void setPickerItemTextViewId(int);
method public void setSelectedColumn(int);
method public final void setSeparator(java.lang.CharSequence);
+ method public final void setSeparators(java.util.List<java.lang.CharSequence>);
method public void setVisibleItemCount(float);
}
diff --git a/samples/SupportWearDemos/AndroidManifest.xml b/samples/SupportWearDemos/AndroidManifest.xml
index 4e4fb60..04e3e68 100644
--- a/samples/SupportWearDemos/AndroidManifest.xml
+++ b/samples/SupportWearDemos/AndroidManifest.xml
@@ -20,13 +20,11 @@
<application android:icon="@drawable/app_sample_code" android:label="SupportWearDemos"
android:theme="@android:style/Theme.DeviceDefault">
- <activity android:name="com.example.android.support.wear.app.SimpleWearableRecyclerViewDemo">
- </activity>
- <activity android:name="com.example.android.support.wear.app.WearableSwitchDemo">
- </activity>
- <activity android:name="com.example.android.support.wear.app.CircularProgressLayoutDemo">
- </activity>
- <activity android:name="com.example.android.support.wear.app.MainDemoActivity">
+ <activity android:name=".app.SimpleWearableRecyclerViewDemo" />
+ <activity android:name=".app.WearableSwitchDemo" />
+ <activity android:name=".app.CircularProgressLayoutDemo" />
+ <activity android:name=".app.drawers.WearableDrawersDemo" android:exported="true" />
+ <activity android:name=".app.MainDemoActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
diff --git a/samples/SupportWearDemos/build.gradle b/samples/SupportWearDemos/build.gradle
index d9d7e29..df63aac 100644
--- a/samples/SupportWearDemos/build.gradle
+++ b/samples/SupportWearDemos/build.gradle
@@ -49,8 +49,8 @@
}
compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_7
- targetCompatibility JavaVersion.VERSION_1_7
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
}
}
diff --git a/samples/SupportWearDemos/res/layout/wearable_drawers_demo.xml b/samples/SupportWearDemos/res/layout/wearable_drawers_demo.xml
new file mode 100644
index 0000000..27843e0
--- /dev/null
+++ b/samples/SupportWearDemos/res/layout/wearable_drawers_demo.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ 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.
+ -->
+
+<android.support.wear.widget.drawer.WearableDrawerLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <FrameLayout
+ android:id="@+id/fragment_container"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <android.support.wear.widget.drawer.WearableNavigationDrawerView
+ android:id="@+id/nav_drawer"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <android.support.wear.widget.drawer.WearableActionDrawerView
+ android:id="@+id/action_drawer"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ app:actionMenu="@menu/action_drawer_menu" />
+</android.support.wear.widget.drawer.WearableDrawerLayout>
diff --git a/samples/SupportWearDemos/res/layout/wearable_drawers_frame_layout_demo.xml b/samples/SupportWearDemos/res/layout/wearable_drawers_frame_layout_demo.xml
new file mode 100644
index 0000000..90e3d42
--- /dev/null
+++ b/samples/SupportWearDemos/res/layout/wearable_drawers_frame_layout_demo.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ 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.
+ -->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:text="FrameLayout"/>
+
+</FrameLayout>
diff --git a/samples/SupportWearDemos/res/layout/wearable_drawers_scroll_view_demo.xml b/samples/SupportWearDemos/res/layout/wearable_drawers_scroll_view_demo.xml
new file mode 100644
index 0000000..9b58bbc
--- /dev/null
+++ b/samples/SupportWearDemos/res/layout/wearable_drawers_scroll_view_demo.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ 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.
+ -->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:nestedScrollingEnabled="true">
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center"
+ android:paddingTop="30dp"
+ android:paddingStart="30dp"
+ android:paddingEnd="30dp"
+ android:paddingBottom="10dp"
+ android:text="ScrollView Fragment"
+ style="@android:style/TextAppearance.Material.Title"/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="30dp"
+ android:paddingStart="30dp"
+ android:paddingEnd="30dp"
+ android:text="@string/lorem_ipsum"
+ style="@android:style/TextAppearance.Material.Body1"/>
+ </LinearLayout>
+
+</ScrollView>
diff --git a/samples/SupportWearDemos/res/menu/action_drawer_menu.xml b/samples/SupportWearDemos/res/menu/action_drawer_menu.xml
new file mode 100644
index 0000000..ba81111
--- /dev/null
+++ b/samples/SupportWearDemos/res/menu/action_drawer_menu.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:title="Item 1" android:icon="@android:drawable/ic_menu_add"/>
+ <item android:title="Item 2" android:icon="@android:drawable/ic_menu_agenda"/>
+ <item android:title="Item 3" android:icon="@android:drawable/ic_menu_call"/>
+ <item android:title="Item 4" android:icon="@android:drawable/ic_menu_delete"/>
+</menu>
\ No newline at end of file
diff --git a/samples/SupportWearDemos/res/values/strings.xml b/samples/SupportWearDemos/res/values/strings.xml
index 7f92211..d0156bf 100644
--- a/samples/SupportWearDemos/res/values/strings.xml
+++ b/samples/SupportWearDemos/res/values/strings.xml
@@ -19,4 +19,11 @@
<string name="cpl_click_me">Click me!</string>
<string name="cpl_clicked">Clicked!</string>
<string name="cpl_finished">Finished!</string>
+ <string name="lorem_ipsum">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
+ nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
+ irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+ Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
+ anim id est laborum.
+ </string>
</resources>
\ No newline at end of file
diff --git a/samples/SupportWearDemos/src/com/example/android/support/wear/app/MainDemoActivity.java b/samples/SupportWearDemos/src/com/example/android/support/wear/app/MainDemoActivity.java
index 313457b..154b14f 100644
--- a/samples/SupportWearDemos/src/com/example/android/support/wear/app/MainDemoActivity.java
+++ b/samples/SupportWearDemos/src/com/example/android/support/wear/app/MainDemoActivity.java
@@ -27,6 +27,8 @@
import android.view.ViewGroup;
import android.widget.Button;
+import com.example.android.support.wear.app.drawers.WearableDrawersDemo;
+
import java.util.HashMap;
import java.util.Map;
@@ -56,6 +58,8 @@
this, WearableSwitchDemo.class));
contentMap.put("Circular Progress Layout", new Intent(
this, CircularProgressLayoutDemo.class));
+ contentMap.put("Wearable Drawers", new Intent(
+ this, WearableDrawersDemo.class));
return contentMap;
}
diff --git a/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/DemoNavDrawerAdapter.java b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/DemoNavDrawerAdapter.java
new file mode 100644
index 0000000..f8d0955
--- /dev/null
+++ b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/DemoNavDrawerAdapter.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.support.wear.app.drawers;
+
+import android.graphics.drawable.Drawable;
+import android.support.wear.widget.drawer.WearableNavigationDrawerView.WearableNavigationDrawerAdapter;
+
+/** Simple and declarative {@link WearableNavigationDrawerAdapter}. */
+public class DemoNavDrawerAdapter extends WearableNavigationDrawerAdapter {
+
+ private final NavItem[] mNavItems;
+
+ public DemoNavDrawerAdapter(NavItem[] navItems) {
+ mNavItems = navItems;
+ }
+
+ @Override
+ public CharSequence getItemText(int pos) {
+ return mNavItems[pos].getTitle();
+ }
+
+ @Override
+ public Drawable getItemDrawable(int pos) {
+ return mNavItems[pos].getDrawable();
+ }
+
+ @Override
+ public int getCount() {
+ return mNavItems.length;
+ }
+}
diff --git a/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/FrameLayoutFragment.java b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/FrameLayoutFragment.java
new file mode 100644
index 0000000..d2be3e8
--- /dev/null
+++ b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/FrameLayoutFragment.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.support.wear.app.drawers;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.example.android.support.wear.R;
+
+/** {@link Fragment} which contains a {@link android.widget.FrameLayout} */
+public class FrameLayoutFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.wearable_drawers_frame_layout_demo, container, false);
+ }
+}
diff --git a/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/NavItem.java b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/NavItem.java
new file mode 100644
index 0000000..8e65d2c
--- /dev/null
+++ b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/NavItem.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.support.wear.app.drawers;
+
+import android.app.Fragment;
+import android.graphics.drawable.Drawable;
+
+/** Represents one top-level navigational item. */
+public class NavItem {
+ private final Class<? extends Fragment> mFragment;
+ private final String mTitle;
+ private final Drawable mDrawable;
+
+ public NavItem(Class<? extends Fragment> fragment, String title, Drawable drawable) {
+ mFragment = fragment;
+ mTitle = title;
+ mDrawable = drawable;
+ }
+
+ public Class<? extends Fragment> getFragment() {
+ return mFragment;
+ }
+
+ public String getTitle() {
+ return mTitle;
+ }
+
+ public Drawable getDrawable() {
+ return mDrawable;
+ }
+}
diff --git a/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/ScrollViewFragment.java b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/ScrollViewFragment.java
new file mode 100644
index 0000000..2b9ac40
--- /dev/null
+++ b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/ScrollViewFragment.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.support.wear.app.drawers;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.example.android.support.wear.R;
+
+/** {@link Fragment} which contains a {@link android.widget.ScrollView} */
+public class ScrollViewFragment extends Fragment {
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ return inflater.inflate(R.layout.wearable_drawers_scroll_view_demo, container, false);
+ }
+}
diff --git a/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/WearableDrawersDemo.java b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/WearableDrawersDemo.java
new file mode 100644
index 0000000..c7c79a3
--- /dev/null
+++ b/samples/SupportWearDemos/src/com/example/android/support/wear/app/drawers/WearableDrawersDemo.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package com.example.android.support.wear.app.drawers;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.support.wear.widget.drawer.WearableActionDrawerView;
+import android.support.wear.widget.drawer.WearableNavigationDrawerView;
+import android.util.Log;
+import android.view.MenuItem;
+import android.widget.Toast;
+
+import com.example.android.support.wear.R;
+
+/** Main {@link Activity} for demoing the Wearable Drawers. */
+public class WearableDrawersDemo extends Activity {
+ private static final String TAG = "WearableDrawersDemo";
+
+ private WearableNavigationDrawerView mNavDrawer;
+ private WearableActionDrawerView mActionDrawer;
+ private NavItem[] mNavItems;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.wearable_drawers_demo);
+ mNavItems = new NavItem[] {
+ new NavItem(
+ ScrollViewFragment.class,
+ "ScrollView",
+ getDrawable(android.R.drawable.star_big_off)),
+ new NavItem(
+ FrameLayoutFragment.class,
+ "FrameLayout",
+ getDrawable(android.R.drawable.star_big_on)),
+ };
+
+ onNavItemSelected(0);
+
+ mNavDrawer = findViewById(R.id.nav_drawer);
+ mNavDrawer.setAdapter(new DemoNavDrawerAdapter(mNavItems));
+ mNavDrawer.addOnItemSelectedListener(this::onNavItemSelected);
+ mNavDrawer.getController().peekDrawer();
+
+ mActionDrawer = findViewById(R.id.action_drawer);
+ mActionDrawer.setOnMenuItemClickListener(this::onActionClicked);
+ mActionDrawer.getController().peekDrawer();
+ }
+
+ private boolean onActionClicked(MenuItem menuItem) {
+ Toast.makeText(this, menuItem.getTitle() + " clicked", Toast.LENGTH_SHORT).show();
+ mActionDrawer.getController().peekDrawer();
+ return true;
+ }
+
+ private void onNavItemSelected(int pos) {
+ Fragment fragment;
+ try {
+ fragment = mNavItems[pos].getFragment().newInstance();
+ } catch (InstantiationException | IllegalAccessException e) {
+ Log.e(TAG, "Failed to instantiate fragment", e);
+ return;
+ }
+
+ getFragmentManager()
+ .beginTransaction()
+ .replace(R.id.fragment_container, fragment)
+ .commit();
+ }
+}
diff --git a/v17/leanback/api/26.1.0-SNAPSHOT.txt b/v17/leanback/api/26.1.0-SNAPSHOT.txt
index bc0eecc..fb2aebc 100644
--- a/v17/leanback/api/26.1.0-SNAPSHOT.txt
+++ b/v17/leanback/api/26.1.0-SNAPSHOT.txt
@@ -3154,7 +3154,8 @@
method public final int getPickerItemLayoutId();
method public final int getPickerItemTextViewId();
method public int getSelectedColumn();
- method public final java.lang.CharSequence getSeparator();
+ method public final deprecated java.lang.CharSequence getSeparator();
+ method public final java.util.List<java.lang.CharSequence> getSeparators();
method public float getVisibleItemCount();
method public void onColumnValueChanged(int, int);
method public void removeOnValueChangedListener(android.support.v17.leanback.widget.picker.Picker.PickerValueListener);
@@ -3165,6 +3166,7 @@
method public final void setPickerItemTextViewId(int);
method public void setSelectedColumn(int);
method public final void setSeparator(java.lang.CharSequence);
+ method public final void setSeparators(java.util.List<java.lang.CharSequence>);
method public void setVisibleItemCount(float);
}
diff --git a/v17/leanback/res/values-af/strings.xml b/v17/leanback/res/values-af/strings.xml
index 5e5c649..a9ef3e8 100644
--- a/v17/leanback/res/values-af/strings.xml
+++ b/v17/leanback/res/values-af/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Mediakontroles word versteek; druk D-paneel om te wys"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Voltooi"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Gaan voort"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer-foutkode %1$d ekstra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"BEGIN HIER"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Volgende"</string>
diff --git a/v17/leanback/res/values-am/strings.xml b/v17/leanback/res/values-am/strings.xml
index 2427364..5ac73a5 100644
--- a/v17/leanback/res/values-am/strings.xml
+++ b/v17/leanback/res/values-am/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"የሚዲያ መቆጣጠሪያዎች ተደብቀዋል። d-pad ን ለማሳየት ይጫኑ"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"ጨርስ"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ቀጥል"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"፦"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"የMediaPlayer ስህተት ኮድ %1$d ተጨማሪ %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ይጀምሩ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"ቀጣይ"</string>
diff --git a/v17/leanback/res/values-ar/strings.xml b/v17/leanback/res/values-ar/strings.xml
index 90cd489..11f0d8c 100644
--- a/v17/leanback/res/values-ar/strings.xml
+++ b/v17/leanback/res/values-ar/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"تم إخفاء عناصر التحكم في الوسائط، يمكنك الضغط على d-pad لإظهارها"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"إنهاء"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"متابعة"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"رمز الخطأ في MediaPlayer %1$d بالإضافة إلى %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"البدء"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"التالية"</string>
diff --git a/v17/leanback/res/values-az/strings.xml b/v17/leanback/res/values-az/strings.xml
index e3fe52b..31d4304 100644
--- a/v17/leanback/res/values-az/strings.xml
+++ b/v17/leanback/res/values-az/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Media idarəetmələri gizlidir, göstərmək üçün d-pad\'i basın"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Bitir"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Davam edin"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Media Pleyer xəta kodu %1$d əlavə %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"BAŞLAYIN"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Növbəti"</string>
diff --git a/v17/leanback/res/values-b+sr+Latn/strings.xml b/v17/leanback/res/values-b+sr+Latn/strings.xml
index 4659835..1a002b4 100644
--- a/v17/leanback/res/values-b+sr+Latn/strings.xml
+++ b/v17/leanback/res/values-b+sr+Latn/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Kontrole za medije su skrivene, pritisnite kontrole za kretanje da biste ih prikazali"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Dovrši"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Nastavi"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kôd greške MediaPlayer-a %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ZAPOČNITE"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Dalje"</string>
diff --git a/v17/leanback/res/values-be/strings.xml b/v17/leanback/res/values-be/strings.xml
index 97e05a6..b5860f1 100644
--- a/v17/leanback/res/values-be/strings.xml
+++ b/v17/leanback/res/values-be/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Элементы кіравання мультымедыя схаваны. Каб паказаць іх, націсніце пераключальнік напрамкаў"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Завяршыць"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Далей"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Код памылкі MediaPlayer %1$d дадаткова %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ПАЧАЦЬ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Далей"</string>
diff --git a/v17/leanback/res/values-bg/strings.xml b/v17/leanback/res/values-bg/strings.xml
index 917519d..d98e8c4 100644
--- a/v17/leanback/res/values-bg/strings.xml
+++ b/v17/leanback/res/values-bg/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Контролите за мултимедия са скрити. Натиснете контролния пад, за да се покажат"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Край"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Напред"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ПЪРВИ СТЪПКИ"</string>
diff --git a/v17/leanback/res/values-bn/strings.xml b/v17/leanback/res/values-bn/strings.xml
index d921817..37f0e48 100644
--- a/v17/leanback/res/values-bn/strings.xml
+++ b/v17/leanback/res/values-bn/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"মিডিয়ার নিয়ন্ত্রণগুলি লুকানো আছে, দেখার জন্য ডি-প্যাড টিপুন"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"শেষ করুন"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"চালিয়ে যান"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"শুরু করা যাক"</string>
diff --git a/v17/leanback/res/values-bs/strings.xml b/v17/leanback/res/values-bs/strings.xml
index 12f404e..804d6ca 100644
--- a/v17/leanback/res/values-bs/strings.xml
+++ b/v17/leanback/res/values-bs/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Kontrole za medije su skrivene. Pritisnite d-pad da ih prikažete"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Završiti"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Nastaviti"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kôd greške MediaPlayera %1$d dodatno %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ZAPOČNITE"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Naprijed"</string>
diff --git a/v17/leanback/res/values-ca/strings.xml b/v17/leanback/res/values-ca/strings.xml
index 943a6c3..74c9700 100644
--- a/v17/leanback/res/values-ca/strings.xml
+++ b/v17/leanback/res/values-ca/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"S\'han amagat els controls multimèdia; prem el teclat direccional per mostrar-los"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finalitza"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continua"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Codi d\'error de MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"COMENÇA"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Següent"</string>
diff --git a/v17/leanback/res/values-cs/strings.xml b/v17/leanback/res/values-cs/strings.xml
index 6519e9c..17b4dfc 100644
--- a/v17/leanback/res/values-cs/strings.xml
+++ b/v17/leanback/res/values-cs/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Ovládací prvky médií jsou skryty, zobrazíte je stisknutím křížového ovladače"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Dokončit"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Pokračovat"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kód chyby přehrávače MediaPlayer %1$d, další %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ZAČÍNÁME"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Další"</string>
diff --git a/v17/leanback/res/values-da/strings.xml b/v17/leanback/res/values-da/strings.xml
index 4174eba..3c6843f 100644
--- a/v17/leanback/res/values-da/strings.xml
+++ b/v17/leanback/res/values-da/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Knapperne til afspilning er skjult. Tryk på D-pad\'en for at se dem"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Afslut"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Fortsæt"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"KOM GODT I GANG"</string>
diff --git a/v17/leanback/res/values-de/strings.xml b/v17/leanback/res/values-de/strings.xml
index 7cdd292..ff9a409 100644
--- a/v17/leanback/res/values-de/strings.xml
+++ b/v17/leanback/res/values-de/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Mediensteuerelemente ausgeblendet. Drücke das Steuerkreuz, um die Steuerelemente wieder einzublenden."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Fertigstellen"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Weiter"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer-Fehlercode %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"JETZT STARTEN"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Weiter"</string>
diff --git a/v17/leanback/res/values-el/strings.xml b/v17/leanback/res/values-el/strings.xml
index c0f039f..795a501 100644
--- a/v17/leanback/res/values-el/strings.xml
+++ b/v17/leanback/res/values-el/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Απόκρυψη στοιχείων ελέγχου μέσων, πιέστε το d-pad για εμφάνιση"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Τέλος"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Συνέχεια"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Κωδικός σφάλματος MediaPlayer %1$d επιπλέον %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ΕΝΑΡΞΗ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Επόμενο"</string>
diff --git a/v17/leanback/res/values-en-rAU/strings.xml b/v17/leanback/res/values-en-rAU/strings.xml
index c15bd3b..03dedda 100644
--- a/v17/leanback/res/values-en-rAU/strings.xml
+++ b/v17/leanback/res/values-en-rAU/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Media controls hidden, press d-pad to show"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finish"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continue"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer error code %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"GET STARTED"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Next"</string>
diff --git a/v17/leanback/res/values-en-rGB/strings.xml b/v17/leanback/res/values-en-rGB/strings.xml
index c15bd3b..03dedda 100644
--- a/v17/leanback/res/values-en-rGB/strings.xml
+++ b/v17/leanback/res/values-en-rGB/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Media controls hidden, press d-pad to show"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finish"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continue"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer error code %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"GET STARTED"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Next"</string>
diff --git a/v17/leanback/res/values-en-rIN/strings.xml b/v17/leanback/res/values-en-rIN/strings.xml
index c15bd3b..03dedda 100644
--- a/v17/leanback/res/values-en-rIN/strings.xml
+++ b/v17/leanback/res/values-en-rIN/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Media controls hidden, press d-pad to show"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finish"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continue"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer error code %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"GET STARTED"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Next"</string>
diff --git a/v17/leanback/res/values-es-rUS/strings.xml b/v17/leanback/res/values-es-rUS/strings.xml
index 41fe3f4..cf84f62 100644
--- a/v17/leanback/res/values-es-rUS/strings.xml
+++ b/v17/leanback/res/values-es-rUS/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Los controles de medios están ocultos; presiona el control direccional para mostrarlos"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finalizar"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuar"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Código de error de MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"COMENZAR"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Siguiente"</string>
diff --git a/v17/leanback/res/values-es/strings.xml b/v17/leanback/res/values-es/strings.xml
index afd9195..bae575f 100644
--- a/v17/leanback/res/values-es/strings.xml
+++ b/v17/leanback/res/values-es/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Controles multimedia ocultos (pulsa la cruceta para mostrarlos)"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finalizar"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuar"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Código de error de MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"EMPEZAR"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Siguiente"</string>
diff --git a/v17/leanback/res/values-et/strings.xml b/v17/leanback/res/values-et/strings.xml
index d87aba3..34a4f0c 100644
--- a/v17/leanback/res/values-et/strings.xml
+++ b/v17/leanback/res/values-et/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Meedia juhtnupud on peidetud, kuvamiseks vajutage DPAD-i"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Lõpeta"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Jätka"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayeri veakood %1$d, lisa %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ALUSTAGE"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Järgmine"</string>
diff --git a/v17/leanback/res/values-eu/strings.xml b/v17/leanback/res/values-eu/strings.xml
index 46140b2..980ac8b 100644
--- a/v17/leanback/res/values-eu/strings.xml
+++ b/v17/leanback/res/values-eu/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Ezkutatuta daude multimedia kontrolatzeko aukerak. Erakusteko, sakatu nabigazio-gurutzea."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Amaitu"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Jarraitu"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer errore-kodea: %1$d (%2$d gehigarria)"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"LEHEN URRATSAK"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Hurrengoa"</string>
diff --git a/v17/leanback/res/values-fa/strings.xml b/v17/leanback/res/values-fa/strings.xml
index b85d1fa..320d819 100644
--- a/v17/leanback/res/values-fa/strings.xml
+++ b/v17/leanback/res/values-fa/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"کنترلهای رسانه پنهان هستند، برای نمایش آنها d-pad (پد کنترل) را فشار دهید"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"پایان"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ادامه"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"شروع به کار"</string>
diff --git a/v17/leanback/res/values-fi/strings.xml b/v17/leanback/res/values-fi/strings.xml
index bc83b9d..863fcd5 100644
--- a/v17/leanback/res/values-fi/strings.xml
+++ b/v17/leanback/res/values-fi/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Mediasäätimet piilotettu, näytä painamalla ohjaimen nuolia."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Valmis"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Jatka"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"."</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayerin virhekoodi %1$d ylimääräinen %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ALOITA"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Seuraava"</string>
diff --git a/v17/leanback/res/values-fr-rCA/strings.xml b/v17/leanback/res/values-fr-rCA/strings.xml
index 300c087..d8ec857 100644
--- a/v17/leanback/res/values-fr-rCA/strings.xml
+++ b/v17/leanback/res/values-fr-rCA/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Les commandes multimédias sont masquées, appuyez sur le pavé directionnel pour les afficher."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Terminer"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuer"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Code d\'erreur MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"COMMENCER"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Suivant"</string>
diff --git a/v17/leanback/res/values-fr/strings.xml b/v17/leanback/res/values-fr/strings.xml
index 3c83164..d3208a8 100644
--- a/v17/leanback/res/values-fr/strings.xml
+++ b/v17/leanback/res/values-fr/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Les commandes multimédias sont masquées. Appuyez sur le pavé directionnel pour les afficher"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Terminer"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuer"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Code d\'erreur MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"COMMENCER"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Suivant"</string>
diff --git a/v17/leanback/res/values-gl/strings.xml b/v17/leanback/res/values-gl/strings.xml
index 21830de..6c5cfb5 100644
--- a/v17/leanback/res/values-gl/strings.xml
+++ b/v17/leanback/res/values-gl/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Os controis de recursos multimedia están ocultos. Preme d-pad para mostralos"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finalizar"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuar"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Código de erro de MediaPlayer %1$d %2$d de máis"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"INTRODUCIÓN"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Seguinte"</string>
diff --git a/v17/leanback/res/values-gu/strings.xml b/v17/leanback/res/values-gu/strings.xml
index bf94e68..2be274d 100644
--- a/v17/leanback/res/values-gu/strings.xml
+++ b/v17/leanback/res/values-gu/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"મીડિયા નિયંત્રણો છુપાયેલા છે, તે બતાવવા માટે d-પૅડ દબાવો"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"સમાપ્ત કરો"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ચાલુ રાખો"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"પ્રારંભ કરો"</string>
diff --git a/v17/leanback/res/values-hi/strings.xml b/v17/leanback/res/values-hi/strings.xml
index 91ff72a..41b0b11 100644
--- a/v17/leanback/res/values-hi/strings.xml
+++ b/v17/leanback/res/values-hi/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"मीडिया नियंत्रण छिपे हुए हैं, दिखाने के लिए डी-पैड दबाएं"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"समाप्त करें"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"जारी रखें"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer गड़बड़ी कोड %1$d अतिरिक्त %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"प्रारंभ करें"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"अगला"</string>
diff --git a/v17/leanback/res/values-hr/strings.xml b/v17/leanback/res/values-hr/strings.xml
index 6ff3ed8..02e5386 100644
--- a/v17/leanback/res/values-hr/strings.xml
+++ b/v17/leanback/res/values-hr/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Medijske kontrole skrivene su, pritisnite D-pad za prikaz"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Završi"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Nastavi"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"."</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kôd pogreške MediaPlayera: %1$d, dodatno %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"POČETAK"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Dalje"</string>
diff --git a/v17/leanback/res/values-hu/strings.xml b/v17/leanback/res/values-hu/strings.xml
index a2b497d..7e67bed 100644
--- a/v17/leanback/res/values-hu/strings.xml
+++ b/v17/leanback/res/values-hu/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"A médiavezérlők el vannak rejtve. Megjelenítésükhöz nyomja le a d-padet."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Befejezés"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Folytatás"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"KEZDŐ LÉPÉSEK"</string>
diff --git a/v17/leanback/res/values-hy/strings.xml b/v17/leanback/res/values-hy/strings.xml
index dfaed6e..e71bc52 100644
--- a/v17/leanback/res/values-hy/strings.xml
+++ b/v17/leanback/res/values-hy/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Մեդիայի կառավարման տարրերը թաքցված են։ Ցուցադրելու համար սեղմեք D-pad-ը"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Վերջ"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Շարունակել"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Մեդիա նվագարկչի սխալի կոդ %1$d լրացուցիչ %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ՍԿՍԵԼ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Հաջորդը"</string>
diff --git a/v17/leanback/res/values-in/strings.xml b/v17/leanback/res/values-in/strings.xml
index 89ca9d0..c5b0568 100644
--- a/v17/leanback/res/values-in/strings.xml
+++ b/v17/leanback/res/values-in/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Kontrol media disembunyikan, tekan d-pad untuk menampilkannya"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Selesai"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Lanjutkan"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"."</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kode error MediaPlayer %1$d ekstra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"MULAI"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Berikutnya"</string>
diff --git a/v17/leanback/res/values-is/strings.xml b/v17/leanback/res/values-is/strings.xml
index 3d49bda..afd1709 100644
--- a/v17/leanback/res/values-is/strings.xml
+++ b/v17/leanback/res/values-is/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Spilunarstýringar faldar, ýttu á stefnuhnappa til að sýna þær"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Ljúka"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Halda áfram"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Villukóði MediaPlayer %1$d aukalegt %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"HEFJAST HANDA"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Áfram"</string>
diff --git a/v17/leanback/res/values-it/strings.xml b/v17/leanback/res/values-it/strings.xml
index 3eab975..f08671b 100644
--- a/v17/leanback/res/values-it/strings.xml
+++ b/v17/leanback/res/values-it/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Controlli multimediali nascosti, premi il d-pad per visualizzarli"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Fine"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continua"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Codice di errore MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"INIZIA"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Avanti"</string>
diff --git a/v17/leanback/res/values-iw/strings.xml b/v17/leanback/res/values-iw/strings.xml
index a3ea4b9..8431583 100644
--- a/v17/leanback/res/values-iw/strings.xml
+++ b/v17/leanback/res/values-iw/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"פקדי המדיה מוסתרים. הקש על ה-d-pad כדי להציג אותם"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"סיום"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"המשך"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"התחל"</string>
diff --git a/v17/leanback/res/values-ja/strings.xml b/v17/leanback/res/values-ja/strings.xml
index 8d5a41d..613b7a7 100644
--- a/v17/leanback/res/values-ja/strings.xml
+++ b/v17/leanback/res/values-ja/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"メディア コントロールは非表示になっています。表示するには D-pad を押してください"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"完了"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"続行"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer エラーコード: %1$d、追加: %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"使ってみる"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"次へ"</string>
diff --git a/v17/leanback/res/values-ka/strings.xml b/v17/leanback/res/values-ka/strings.xml
index ef148b0..0913a1d 100644
--- a/v17/leanback/res/values-ka/strings.xml
+++ b/v17/leanback/res/values-ka/strings.xml
@@ -58,8 +58,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"მედიის მართვის საშუალებები დამალულია, გამოსაჩენად დააჭირეთ D-pad-ს"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"დასრულება"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"გაგრძელება"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"დაწყება"</string>
diff --git a/v17/leanback/res/values-kk/strings.xml b/v17/leanback/res/values-kk/strings.xml
index 36902f5..22c67b2 100644
--- a/v17/leanback/res/values-kk/strings.xml
+++ b/v17/leanback/res/values-kk/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Мультимедияны басқару элементтері жасырын, оларды көрсету үшін d-тақтасын басыңыз"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Аяқтау"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Жалғастыру"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer қате коды %1$d, қосымша %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ІСКЕ КІРІСУ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Келесі"</string>
diff --git a/v17/leanback/res/values-km/strings.xml b/v17/leanback/res/values-km/strings.xml
index c2dd333..4c3d61c 100644
--- a/v17/leanback/res/values-km/strings.xml
+++ b/v17/leanback/res/values-km/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"ការគ្រប់គ្រងមេឌៀត្រូវបានលាក់ សូមចុច d-pad ដើម្បីបង្ហាញ"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"បញ្ចប់"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"បន្ត"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"៖"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ចាប់ផ្ដើម"</string>
diff --git a/v17/leanback/res/values-kn/strings.xml b/v17/leanback/res/values-kn/strings.xml
index f797a9e..7132cef 100644
--- a/v17/leanback/res/values-kn/strings.xml
+++ b/v17/leanback/res/values-kn/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"ಮಾಧ್ಯಮ ನಿಯಂತ್ರಣಗಳನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ, ತೋರಿಸಲು d-pad ಒತ್ತಿರಿ"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"ಪೂರ್ಣಗೊಳಿಸು"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ಮುಂದುವರಿಸು"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ಪ್ರಾರಂಭಿಸಿ"</string>
diff --git a/v17/leanback/res/values-ko/strings.xml b/v17/leanback/res/values-ko/strings.xml
index b418937..f6e5136 100644
--- a/v17/leanback/res/values-ko/strings.xml
+++ b/v17/leanback/res/values-ko/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"미디어 컨트롤이 숨겨져 있습니다. 표시하려면 D-Pad를 누르세요."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"완료"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"계속"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"시작하기"</string>
diff --git a/v17/leanback/res/values-ky/strings.xml b/v17/leanback/res/values-ky/strings.xml
index 3c52130..f24a0a6 100644
--- a/v17/leanback/res/values-ky/strings.xml
+++ b/v17/leanback/res/values-ky/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Медиа файлды башкаруу жашырылган, көрүү үчүн d-pad көзөмөлдөө каражатын басыңыз"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Бүтүрүү"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Улантуу"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"БАШТАДЫК"</string>
diff --git a/v17/leanback/res/values-lo/strings.xml b/v17/leanback/res/values-lo/strings.xml
index b4f4844..92b7c90 100644
--- a/v17/leanback/res/values-lo/strings.xml
+++ b/v17/leanback/res/values-lo/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"ເຊື່ອງຕົວຄວບຄຸມມີເດຍແລ້ວ, ກົດປຸ່ມທິດທາງເພື່ອສະແດງ"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"ສໍາເລັດ"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ສືບຕໍ່"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ເລີ່ມຕົ້ນນຳໃຊ້"</string>
diff --git a/v17/leanback/res/values-lt/strings.xml b/v17/leanback/res/values-lt/strings.xml
index 61692d5..0f6bfce 100644
--- a/v17/leanback/res/values-lt/strings.xml
+++ b/v17/leanback/res/values-lt/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Medijos valdikliai paslėpti. Paspauskite krypčių valdiklius, kad rodytumėte"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Baigti"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Tęsti"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"PRADĖTI"</string>
diff --git a/v17/leanback/res/values-lv/strings.xml b/v17/leanback/res/values-lv/strings.xml
index b1e36dd..2b17bab 100644
--- a/v17/leanback/res/values-lv/strings.xml
+++ b/v17/leanback/res/values-lv/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Multivides vadīklas ir paslēptas. Nospiediet virzienu tastatūru, lai tās tiktu parādītas."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Pabeigt"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Turpināt"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"SĀKT DARBU"</string>
diff --git a/v17/leanback/res/values-mk/strings.xml b/v17/leanback/res/values-mk/strings.xml
index d694167..5284f64 100644
--- a/v17/leanback/res/values-mk/strings.xml
+++ b/v17/leanback/res/values-mk/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Контролите за аудио-визуелните медиуми се скриени, притиснете на подлогата за насока за да ги прикажете"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Заврши"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Продолжи"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Код за грешка на MediaPlayer %1$d дополнително %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ЗАПОЧНИ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Следно"</string>
diff --git a/v17/leanback/res/values-ml/strings.xml b/v17/leanback/res/values-ml/strings.xml
index 03dc391..012bf44 100644
--- a/v17/leanback/res/values-ml/strings.xml
+++ b/v17/leanback/res/values-ml/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"മീഡിയ നിയന്ത്രണങ്ങൾ മറച്ചിരിക്കുന്നു, കാണിക്കുന്നതിന് ഡി-പാഡ് അമർത്തുക"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"പൂര്ത്തിയാക്കുക"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"തുടരുക"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ആരംഭിക്കുക"</string>
diff --git a/v17/leanback/res/values-mn/strings.xml b/v17/leanback/res/values-mn/strings.xml
index 3369c01..5cd8f4d 100644
--- a/v17/leanback/res/values-mn/strings.xml
+++ b/v17/leanback/res/values-mn/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Медиа удирдлага нуугдсан байна, харуулахын тулд d-pad-г дарна уу"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Дуусгах"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Үргэлжлүүлэх"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ЭХЭЛЦГЭЭЕ"</string>
diff --git a/v17/leanback/res/values-mr/strings.xml b/v17/leanback/res/values-mr/strings.xml
index 948b536..ccadd10 100644
--- a/v17/leanback/res/values-mr/strings.xml
+++ b/v17/leanback/res/values-mr/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"मीडिया नियंत्रणे लपलेली आहेत, दर्शवण्यासाठी d-pad दाबा"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"समाप्त"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"सुरू ठेवा"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"प्रारंभ करा"</string>
diff --git a/v17/leanback/res/values-ms/strings.xml b/v17/leanback/res/values-ms/strings.xml
index dcfa76b..5a66aac 100644
--- a/v17/leanback/res/values-ms/strings.xml
+++ b/v17/leanback/res/values-ms/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Kawalan media disembunyikan, tekan d-pad untuk menunjukkan"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Selesai"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Teruskan"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"MULAKAN"</string>
diff --git a/v17/leanback/res/values-my/strings.xml b/v17/leanback/res/values-my/strings.xml
index 8a4068f..563ee04 100644
--- a/v17/leanback/res/values-my/strings.xml
+++ b/v17/leanback/res/values-my/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"မီဒီယာခလုတ်များကို ဝှက်ထားပါသည်။ ပြရန် d-pad ကို နှိပ်ပါ"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"ပြီးပြီ"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ဆက်လုပ်ရန်"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"−"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer မှားယွင်းမှုကုဒ် %1$d နှင့် အပို %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"စတင်ပါ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"ရှေ့သို့"</string>
diff --git a/v17/leanback/res/values-nb/strings.xml b/v17/leanback/res/values-nb/strings.xml
index 1e924a8..bdcd016 100644
--- a/v17/leanback/res/values-nb/strings.xml
+++ b/v17/leanback/res/values-nb/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Mediekontrollene er skjult – trykk på styrepilene for å vise dem"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Fullfør"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Fortsett"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">"."</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer-feilkode %1$d ekstra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"KOM I GANG"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Neste"</string>
diff --git a/v17/leanback/res/values-ne/strings.xml b/v17/leanback/res/values-ne/strings.xml
index 5c58907..1dd2da6 100644
--- a/v17/leanback/res/values-ne/strings.xml
+++ b/v17/leanback/res/values-ne/strings.xml
@@ -56,8 +56,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"मिडियाका नियन्त्रणहरू लुकेका छन्, देखाउनका लागि d-pad लाई थिच्नुहोस्"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"समाप्त गर्नुहोस्"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"जारी राख्नुहोस्"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"सुरु गरौँ"</string>
diff --git a/v17/leanback/res/values-nl/strings.xml b/v17/leanback/res/values-nl/strings.xml
index 69947ce..c8bc8c8 100644
--- a/v17/leanback/res/values-nl/strings.xml
+++ b/v17/leanback/res/values-nl/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Opties voor mediabediening verborgen. Druk op de D-pad om ze weer te geven."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Voltooien"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Doorgaan"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"-"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"AAN DE SLAG"</string>
diff --git a/v17/leanback/res/values-pa/strings.xml b/v17/leanback/res/values-pa/strings.xml
index b423a73..404bf3b 100644
--- a/v17/leanback/res/values-pa/strings.xml
+++ b/v17/leanback/res/values-pa/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"ਮੀਡੀਆ ਕੰਟਰੋਲ ਲੁਕੇ ਹੋਏ ਹਨ, ਵਿਖਾਉਣ ਲਈ ਡੀ-ਪੈਡ ਦਬਾਓ"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"ਖ਼ਤਮ"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ਜਾਰੀ ਰੱਖੋ"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ਸ਼ੁਰੂਆਤ ਕਰੋ"</string>
diff --git a/v17/leanback/res/values-pl/strings.xml b/v17/leanback/res/values-pl/strings.xml
index d1c7988..b986598 100644
--- a/v17/leanback/res/values-pl/strings.xml
+++ b/v17/leanback/res/values-pl/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Elementy sterujące multimediami są ukryte. Naciśnij pad kierunkowy, by je wyświetlić"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Zakończ"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Dalej"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ROZPOCZNIJ"</string>
diff --git a/v17/leanback/res/values-pt-rBR/strings.xml b/v17/leanback/res/values-pt-rBR/strings.xml
index 1076b87..c5f238e 100644
--- a/v17/leanback/res/values-pt-rBR/strings.xml
+++ b/v17/leanback/res/values-pt-rBR/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Os controles de mídia estão ocultos. Pressione o botão direcional para exibi-los"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Concluir"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuar"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Código de erro do MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"PRIMEIROS PASSOS"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Próximo"</string>
diff --git a/v17/leanback/res/values-pt-rPT/strings.xml b/v17/leanback/res/values-pt-rPT/strings.xml
index 1191a50..41ea488 100644
--- a/v17/leanback/res/values-pt-rPT/strings.xml
+++ b/v17/leanback/res/values-pt-rPT/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Controlos de multimédia ocultados, prima o teclado direcional para mostrar"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Concluir"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuar"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Código de erro do MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"INICIAR"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Seguinte"</string>
diff --git a/v17/leanback/res/values-pt/strings.xml b/v17/leanback/res/values-pt/strings.xml
index 1076b87..c5f238e 100644
--- a/v17/leanback/res/values-pt/strings.xml
+++ b/v17/leanback/res/values-pt/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Os controles de mídia estão ocultos. Pressione o botão direcional para exibi-los"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Concluir"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuar"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Código de erro do MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"PRIMEIROS PASSOS"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Próximo"</string>
diff --git a/v17/leanback/res/values-ro/strings.xml b/v17/leanback/res/values-ro/strings.xml
index a362541..325632e 100644
--- a/v17/leanback/res/values-ro/strings.xml
+++ b/v17/leanback/res/values-ro/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Comenzile media sunt ascunse. Apăsați pe butonul direcțional pentru a le afișa."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Finalizați"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Continuați"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Cod de eroare MediaPlayer %1$d suplimentar %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ÎNCEPEȚI"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Înainte"</string>
diff --git a/v17/leanback/res/values-ru/strings.xml b/v17/leanback/res/values-ru/strings.xml
index 8d045cf..8631587 100644
--- a/v17/leanback/res/values-ru/strings.xml
+++ b/v17/leanback/res/values-ru/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Элементы управления скрыты. Нажмите D-pad, чтобы показать их."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Готово"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Далее"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Код ошибки медиапроигрывателя: %1$d (дополнительный: %2$d)"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"НАЧАТЬ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Далее"</string>
diff --git a/v17/leanback/res/values-si/strings.xml b/v17/leanback/res/values-si/strings.xml
index 238c105..b92e6ec 100644
--- a/v17/leanback/res/values-si/strings.xml
+++ b/v17/leanback/res/values-si/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"මාධ්ය පාලක සඟවා ඇත, පෙන්වීමට d-pad ඔබන්න"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"අවසානය"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"දිගටම කර ගෙන යන්න"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ආරම්භ කරන්න"</string>
diff --git a/v17/leanback/res/values-sk/strings.xml b/v17/leanback/res/values-sk/strings.xml
index bd68c14..731d62b 100644
--- a/v17/leanback/res/values-sk/strings.xml
+++ b/v17/leanback/res/values-sk/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Ovládacie prvky médií sú skryté, zobrazíte ich stlačením krížového ovládača"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Dokončiť"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Pokračovať"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kód chyby MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ZAČÍNAME"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Ďalej"</string>
diff --git a/v17/leanback/res/values-sl/strings.xml b/v17/leanback/res/values-sl/strings.xml
index 30c1f11..2fd75f7 100644
--- a/v17/leanback/res/values-sl/strings.xml
+++ b/v17/leanback/res/values-sl/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Kontrolniki predstavnosti so skriti, za prikaz pritisnite smerni gumb"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Dokončaj"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Naprej"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ZAČNITE"</string>
diff --git a/v17/leanback/res/values-sq/strings.xml b/v17/leanback/res/values-sq/strings.xml
index 4c6aa99..c34f5ba 100644
--- a/v17/leanback/res/values-sq/strings.xml
+++ b/v17/leanback/res/values-sq/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Kontrollet e medias të fshehura, shtyp bllokun e drejtimit për t\'i shfaqur"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Përfundo"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Vazhdo"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Kodi i gabimit i MediaPlayer %1$d shtesa %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"FILLO"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Përpara"</string>
diff --git a/v17/leanback/res/values-sr/strings.xml b/v17/leanback/res/values-sr/strings.xml
index e22d127..705aafe 100644
--- a/v17/leanback/res/values-sr/strings.xml
+++ b/v17/leanback/res/values-sr/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Контроле за медије су скривене, притисните контроле за кретање да бисте их приказали"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Доврши"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Настави"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Кôд грешке MediaPlayer-а %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ЗАПОЧНИТЕ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Даље"</string>
diff --git a/v17/leanback/res/values-sv/strings.xml b/v17/leanback/res/values-sv/strings.xml
index 80a9050..d528d53 100644
--- a/v17/leanback/res/values-sv/strings.xml
+++ b/v17/leanback/res/values-sv/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Mediakontrollerna är dolda och visas om du trycker på styrkorset"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Slutför"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Fortsätt"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Felkod för MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"KOM IGÅNG"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Nästa"</string>
diff --git a/v17/leanback/res/values-sw/strings.xml b/v17/leanback/res/values-sw/strings.xml
index c586455..19fbc54 100644
--- a/v17/leanback/res/values-sw/strings.xml
+++ b/v17/leanback/res/values-sw/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Imeficha udhibiti wa maudhui, bonyeza d-pad ili uuonyeshe"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Kamilisha"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Endelea"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Msimbo wa hitilafu wa Kichezaji Maudhui %1$d %2$d zaidi"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ANZA KUTUMIA"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Inayofuata"</string>
diff --git a/v17/leanback/res/values-ta/strings.xml b/v17/leanback/res/values-ta/strings.xml
index d7cc8ed..ca53421 100644
--- a/v17/leanback/res/values-ta/strings.xml
+++ b/v17/leanback/res/values-ta/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"மீடியா கட்டுப்பாடுகள் மறைக்கப்பட்டுள்ளன. கட்டுப்பாடுகளைக் காட்ட, டிபேடை அழுத்தவும்"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"முடி"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"தொடர்க"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer பிழைக் குறியீடு: %1$d கூடுதல் %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"தொடங்குக"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"அடுத்து"</string>
diff --git a/v17/leanback/res/values-te/strings.xml b/v17/leanback/res/values-te/strings.xml
index 2d82651..d0ab476 100644
--- a/v17/leanback/res/values-te/strings.xml
+++ b/v17/leanback/res/values-te/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"మీడియా నియంత్రణలు దాచబడ్డాయి, చూపించడానికి d-ప్యాడ్ నొక్కండి"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"ముగించు"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"కొనసాగించు"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ప్రారంభించు"</string>
diff --git a/v17/leanback/res/values-th/strings.xml b/v17/leanback/res/values-th/strings.xml
index 1e74c69..2ab6b50 100644
--- a/v17/leanback/res/values-th/strings.xml
+++ b/v17/leanback/res/values-th/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"ซ่อนการควบคุมสื่ออยู่ กด d-pad เพื่อแสดง"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"เสร็จสิ้น"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"ต่อไป"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"เริ่มต้นใช้งาน"</string>
diff --git a/v17/leanback/res/values-tl/strings.xml b/v17/leanback/res/values-tl/strings.xml
index ac14e41..735e7ec 100644
--- a/v17/leanback/res/values-tl/strings.xml
+++ b/v17/leanback/res/values-tl/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Nakatago ang mga kontrol ng media, pindutin ang d-pad upang ipakita"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Tapusin"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Magpatuloy"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"MAGSIMULA"</string>
diff --git a/v17/leanback/res/values-tr/strings.xml b/v17/leanback/res/values-tr/strings.xml
index c29b7f8..f04c2b1 100644
--- a/v17/leanback/res/values-tr/strings.xml
+++ b/v17/leanback/res/values-tr/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Medya denetimleri gizli durumda. Görüntülemek için d-pad\'e basın."</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Son"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Devam"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"BAŞLA"</string>
diff --git a/v17/leanback/res/values-uk/strings.xml b/v17/leanback/res/values-uk/strings.xml
index 1829560..12a9ebf 100644
--- a/v17/leanback/res/values-uk/strings.xml
+++ b/v17/leanback/res/values-uk/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Елементи керування медіа сховано. Натисніть цифрову панель, щоб показати їх"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Закінчити"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Продовжити"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"."</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Код помилки MediaPlayer: %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"ПОЧАТИ"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Далі"</string>
diff --git a/v17/leanback/res/values-ur/strings.xml b/v17/leanback/res/values-ur/strings.xml
index 0978c85..a5343a2 100644
--- a/v17/leanback/res/values-ur/strings.xml
+++ b/v17/leanback/res/values-ur/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"میڈیا کنٹرولز مخفی ہیں، شو کرنے کیلئے d-pad دبائیں"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"مکمل کریں"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"جاری رکھیں"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"شروع کریں"</string>
diff --git a/v17/leanback/res/values-uz/strings.xml b/v17/leanback/res/values-uz/strings.xml
index 915b0b4..f09f78f 100644
--- a/v17/leanback/res/values-uz/strings.xml
+++ b/v17/leanback/res/values-uz/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Boshqaruv elementlari berkitilgan, ochish uchun D-pad tugmasini bosing"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Tugatish"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Davom etish"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"MediaPlayer xatosi kodi: %1$d, %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"BOSHLADIK"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Keyingisi"</string>
diff --git a/v17/leanback/res/values-vi/strings.xml b/v17/leanback/res/values-vi/strings.xml
index db9421b..fb8c229 100644
--- a/v17/leanback/res/values-vi/strings.xml
+++ b/v17/leanback/res/values-vi/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Điều khiển phương tiện bị ẩn, nhấn d-pad để hiển thị"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Hoàn tất"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Tiếp tục"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"BẮT ĐẦU"</string>
diff --git a/v17/leanback/res/values-zh-rCN/strings.xml b/v17/leanback/res/values-zh-rCN/strings.xml
index 63fd948..1990d40 100644
--- a/v17/leanback/res/values-zh-rCN/strings.xml
+++ b/v17/leanback/res/values-zh-rCN/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"媒体控件已隐藏,按 D-pad 即可显示"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"完成"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"继续"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"开始使用"</string>
diff --git a/v17/leanback/res/values-zh-rHK/strings.xml b/v17/leanback/res/values-zh-rHK/strings.xml
index b7a4a2e..00df362 100644
--- a/v17/leanback/res/values-zh-rHK/strings.xml
+++ b/v17/leanback/res/values-zh-rHK/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"畫面已隱藏媒體控制項,按十字鍵即可顯示"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"完成"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"繼續"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"開始使用"</string>
diff --git a/v17/leanback/res/values-zh-rTW/strings.xml b/v17/leanback/res/values-zh-rTW/strings.xml
index 8d0e1d9..421d0ff 100644
--- a/v17/leanback/res/values-zh-rTW/strings.xml
+++ b/v17/leanback/res/values-zh-rTW/strings.xml
@@ -54,8 +54,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"媒體控制項已隱藏,按下 D-Pad 即可顯示"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"完成"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"繼續"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<!-- no translation found for lb_media_player_error (3650250994187305396) -->
<skip />
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"開始使用"</string>
diff --git a/v17/leanback/res/values-zu/strings.xml b/v17/leanback/res/values-zu/strings.xml
index 6812abd..06f5641 100644
--- a/v17/leanback/res/values-zu/strings.xml
+++ b/v17/leanback/res/values-zu/strings.xml
@@ -53,8 +53,6 @@
<string name="lb_playback_controls_hidden" msgid="8940984081242033574">"Izilawuli zemidiya zifihliwe, cindezela ku-d-pad ukuze uzibonise"</string>
<string name="lb_guidedaction_finish_title" msgid="4015190340667946245">"Qeda"</string>
<string name="lb_guidedaction_continue_title" msgid="8842094924543063706">"Qhubeka"</string>
- <string name="lb_date_separator" msgid="2440386660906697298">"/"</string>
- <string name="lb_time_separator" msgid="2763247350845477227">":"</string>
<string name="lb_media_player_error" msgid="3650250994187305396">"Ikhodi yephutha le-MediaPlayer %1$d extra %2$d"</string>
<string name="lb_onboarding_get_started" msgid="6961440391306351139">"QALISA"</string>
<string name="lb_onboarding_accessibility_next" msgid="2918313444257732434">"Okulandelayo"</string>
diff --git a/v17/leanback/res/values/strings.xml b/v17/leanback/res/values/strings.xml
index aef086a..1d6c417 100644
--- a/v17/leanback/res/values/strings.xml
+++ b/v17/leanback/res/values/strings.xml
@@ -91,11 +91,6 @@
<!-- Title of standard Continue action for GuidedStepFragment -->
<string name="lb_guidedaction_continue_title">Continue</string>
- <!-- Separator for date picker [CHAR LIMIT=2] -->
- <string name="lb_date_separator">/</string>
- <!-- Separator for time picker [CHAR LIMIT=2] -->
- <string name="lb_time_separator">:</string>
-
<!-- Error string for MediaPlayer -->
<string name="lb_media_player_error">MediaPlayer error code %1$d extra %2$d</string>
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java b/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
index 45d69ef..f2dae95 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/GridLayoutManager.java
@@ -1269,8 +1269,7 @@
if (TRACE) TraceCompat.beginSection("processRowSizeSecondary");
CircularIntArray[] rows = mGrid == null ? null : mGrid.getItemPositionsInRows();
boolean changed = false;
- int scrapChildWidth = -1;
- int scrapChildHeight = -1;
+ int scrapeChildSize = -1;
for (int rowIndex = 0; rowIndex < mNumRows; rowIndex++) {
CircularIntArray row = rows == null ? null : rows[rowIndex];
@@ -1281,7 +1280,7 @@
final int rowIndexStart = row.get(rowItemPairIndex);
final int rowIndexEnd = row.get(rowItemPairIndex + 1);
for (int i = rowIndexStart; i <= rowIndexEnd; i++) {
- final View view = findViewByPosition(i);
+ final View view = findViewByPosition(i - mPositionDeltaInPreLayout);
if (view == null) {
continue;
}
@@ -1299,27 +1298,49 @@
final int itemCount = mState.getItemCount();
if (!mBaseGridView.hasFixedSize() && measure && rowSize < 0 && itemCount > 0) {
- if (scrapChildWidth < 0 && scrapChildHeight < 0) {
- int position;
- if (mFocusPosition == NO_POSITION) {
+ if (scrapeChildSize < 0) {
+ // measure a child that is close to mFocusPosition but not currently visible
+ int position = mFocusPosition;
+ if (position < 0) {
position = 0;
- } else if (mFocusPosition >= itemCount) {
+ } else if (position >= itemCount) {
position = itemCount - 1;
- } else {
- position = mFocusPosition;
}
- measureScrapChild(position,
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
- MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
- mMeasuredDimension);
- scrapChildWidth = mMeasuredDimension[0];
- scrapChildHeight = mMeasuredDimension[1];
- if (DEBUG) {
- Log.v(TAG, "measured scrap child: " + scrapChildWidth + " "
- + scrapChildHeight);
+ if (getChildCount() > 0) {
+ int firstPos = mBaseGridView.getChildViewHolder(
+ getChildAt(0)).getLayoutPosition();
+ int lastPos = mBaseGridView.getChildViewHolder(
+ getChildAt(getChildCount() - 1)).getLayoutPosition();
+ // if mFocusPosition is between first and last, choose either
+ // first - 1 or last + 1
+ if (position >= firstPos && position <= lastPos) {
+ position = (position - firstPos <= lastPos - position)
+ ? (firstPos - 1) : (lastPos + 1);
+ // try the other value if the position is invalid. if both values are
+ // invalid, skip measureScrapChild below.
+ if (position < 0 && lastPos < itemCount - 1) {
+ position = lastPos + 1;
+ } else if (position >= itemCount && firstPos > 0) {
+ position = firstPos - 1;
+ }
+ }
+ }
+ if (position >= 0 && position < itemCount) {
+ measureScrapChild(position,
+ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
+ mMeasuredDimension);
+ scrapeChildSize = mOrientation == HORIZONTAL ? mMeasuredDimension[0] :
+ mMeasuredDimension[1];
+ if (DEBUG) {
+ Log.v(TAG, "measured scrap child: " + mMeasuredDimension[0] + " "
+ + mMeasuredDimension[1]);
+ }
}
}
- rowSize = mOrientation == HORIZONTAL ? scrapChildHeight : scrapChildWidth;
+ if (scrapeChildSize >= 0) {
+ rowSize = scrapeChildSize;
+ }
}
if (rowSize < 0) {
rowSize = 0;
@@ -1404,7 +1425,10 @@
mRowSizeSecondary = new int[mNumRows];
}
- // Measure all current children and update cached row heights
+ if (mState.isPreLayout()) {
+ updatePositionDeltaInPreLayout();
+ }
+ // Measure all current children and update cached row height or column width
processRowSizeSecondary(true);
switch (modeSecondary) {
@@ -2057,6 +2081,22 @@
mPositionToRowInPostLayout.clear();
}
+ // in prelayout, first child's getViewPosition can be smaller than old adapter position
+ // if there were items removed before first visible index. For example:
+ // visible items are 3, 4, 5, 6, deleting 1, 2, 3 from adapter; the view position in
+ // prelayout are not 3(deleted), 4, 5, 6. Instead it's 1(deleted), 2, 3, 4.
+ // So there is a delta (2 in this case) between last cached position and prelayout position.
+ void updatePositionDeltaInPreLayout() {
+ if (getChildCount() > 0) {
+ View view = getChildAt(0);
+ LayoutParams lp = (LayoutParams) view.getLayoutParams();
+ mPositionDeltaInPreLayout = mGrid.getFirstVisibleIndex()
+ - lp.getViewLayoutPosition();
+ } else {
+ mPositionDeltaInPreLayout = 0;
+ }
+ }
+
// Lays out items based on the current scroll position
@Override
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
@@ -2094,6 +2134,7 @@
saveContext(recycler, state);
if (state.isPreLayout()) {
+ updatePositionDeltaInPreLayout();
int childCount = getChildCount();
if (mGrid != null && childCount > 0) {
int minChangedEdge = Integer.MAX_VALUE;
@@ -2105,12 +2146,6 @@
for (int i = 0; i < childCount; i++) {
View view = getChildAt(i);
LayoutParams lp = (LayoutParams) view.getLayoutParams();
- if (i == 0) {
- // first child's layout position can be smaller than index if there were
- // items removed before first visible index.
- mPositionDeltaInPreLayout = mGrid.getFirstVisibleIndex()
- - lp.getViewLayoutPosition();
- }
int newAdapterPosition = mBaseGridView.getChildAdapterPosition(view);
// if either of following happening
// 1. item itself has changed or layout parameter changed
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/picker/DatePicker.java b/v17/leanback/src/android/support/v17/leanback/widget/picker/DatePicker.java
index 7725bf3..2744dec 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/picker/DatePicker.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/picker/DatePicker.java
@@ -29,6 +29,7 @@
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
@@ -74,7 +75,6 @@
super(context, attrs, defStyleAttr);
updateCurrentLocale();
- setSeparator(mConstant.dateSeparator);
final TypedArray attributesArray = context.obtainStyledAttributes(attrs,
R.styleable.lbDatePicker);
@@ -120,6 +120,98 @@
}
/**
+ * Returns the best localized representation of the date for the given date format and the
+ * current locale.
+ *
+ * @param datePickerFormat The date format skeleton (e.g. "dMy") used to gather the
+ * appropriate representation of the date in the current locale.
+ *
+ * @return The best localized representation of the date for the given date format
+ */
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ final String yearPattern;
+ if (PickerUtility.SUPPORTS_BEST_DATE_TIME_PATTERN) {
+ yearPattern = android.text.format.DateFormat.getBestDateTimePattern(mConstant.locale,
+ datePickerFormat);
+ } else {
+ final java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(
+ getContext());
+ if (dateFormat instanceof SimpleDateFormat) {
+ yearPattern = ((SimpleDateFormat) dateFormat).toLocalizedPattern();
+ } else {
+ yearPattern = DATE_FORMAT;
+ }
+ }
+ return TextUtils.isEmpty(yearPattern) ? DATE_FORMAT : yearPattern;
+ }
+
+ /**
+ * Extracts the separators used to separate date fields (including before the first and after
+ * the last date field). The separators can vary based on the individual locale date format,
+ * defined in the Unicode CLDR and cannot be supposed to be "/".
+ *
+ * See http://unicode.org/cldr/trac/browser/trunk/common/main
+ *
+ * For example, for Croatian in dMy format, the best localized representation is "d. M. y". This
+ * method returns {"", ".", ".", "."}, where the first separator indicates nothing needs to be
+ * displayed to the left of the day field, "." needs to be displayed tos the right of the day
+ * field, and so forth.
+ *
+ * @return The ArrayList of separators to populate between the actual date fields in the
+ * DatePicker.
+ */
+ List<CharSequence> extractSeparators() {
+ // Obtain the time format string per the current locale (e.g. h:mm a)
+ String hmaPattern = getBestYearMonthDayPattern(mDatePickerFormat);
+
+ List<CharSequence> separators = new ArrayList<>();
+ StringBuilder sb = new StringBuilder();
+ char lastChar = '\0';
+ // See http://www.unicode.org/reports/tr35/tr35-dates.html for date formats
+ final char[] dateFormats = {'Y', 'y', 'M', 'm', 'D', 'd'};
+ boolean processingQuote = false;
+ for (int i = 0; i < hmaPattern.length(); i++) {
+ char c = hmaPattern.charAt(i);
+ if (c == ' ') {
+ continue;
+ }
+ if (c == '\'') {
+ if (!processingQuote) {
+ sb.setLength(0);
+ processingQuote = true;
+ } else {
+ processingQuote = false;
+ }
+ continue;
+ }
+ if (processingQuote) {
+ sb.append(c);
+ } else {
+ if (isAnyOf(c, dateFormats)) {
+ if (c != lastChar) {
+ separators.add(sb.toString());
+ sb.setLength(0);
+ }
+ } else {
+ sb.append(c);
+ }
+ }
+ lastChar = c;
+ }
+ separators.add(sb.toString());
+ return separators;
+ }
+
+ private static boolean isAnyOf(char c, char[] any) {
+ for (int i = 0; i < any.length; i++) {
+ if (c == any[i]) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
* Changes format of showing dates. For example "YMD".
* @param datePickerFormat Format of showing dates.
*/
@@ -128,16 +220,22 @@
datePickerFormat = new String(
android.text.format.DateFormat.getDateFormatOrder(getContext()));
}
- datePickerFormat = datePickerFormat.toUpperCase();
if (TextUtils.equals(mDatePickerFormat, datePickerFormat)) {
return;
}
mDatePickerFormat = datePickerFormat;
+ List<CharSequence> separators = extractSeparators();
+ if (separators.size() != (datePickerFormat.length() + 1)) {
+ throw new IllegalStateException("Separators size: " + separators.size() + " must equal"
+ + " the size of datePickerFormat: " + datePickerFormat.length() + " + 1");
+ }
+ setSeparators(separators);
mYearColumn = mMonthColumn = mDayColumn = null;
mColYearIndex = mColDayIndex = mColMonthIndex = -1;
+ String dateFieldsPattern = datePickerFormat.toUpperCase();
ArrayList<PickerColumn> columns = new ArrayList<PickerColumn>(3);
- for (int i = 0; i < datePickerFormat.length(); i++) {
- switch (datePickerFormat.charAt(i)) {
+ for (int i = 0; i < dateFieldsPattern.length(); i++) {
+ switch (dateFieldsPattern.charAt(i)) {
case 'Y':
if (mYearColumn != null) {
throw new IllegalArgumentException("datePicker format error");
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/picker/Picker.java b/v17/leanback/src/android/support/v17/leanback/widget/picker/Picker.java
index 28d7aeb..486e877 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/picker/Picker.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/picker/Picker.java
@@ -20,6 +20,7 @@
import android.support.v17.leanback.widget.OnChildViewHolderSelectedListener;
import android.support.v17.leanback.widget.VerticalGridView;
import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.KeyEvent;
@@ -33,6 +34,7 @@
import android.widget.TextView;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -74,23 +76,53 @@
private float mVisibleItems = 1;
private int mSelectedColumn = 0;
- private CharSequence mSeparator;
+ private List<CharSequence> mSeparators = new ArrayList<>();
private int mPickerItemLayoutId = R.layout.lb_picker_item;
private int mPickerItemTextViewId = 0;
/**
* Gets separator string between columns.
+ *
+ * @return The separator that will be populated between all the Picker columns.
+ * @deprecated Use {@link #getSeparators()}
*/
public final CharSequence getSeparator() {
- return mSeparator;
+ return mSeparators.get(0);
}
/**
* Sets separator String between Picker columns.
+ *
* @param separator Separator String between Picker columns.
*/
public final void setSeparator(CharSequence separator) {
- mSeparator = separator;
+ setSeparators(Arrays.asList(separator));
+ }
+
+ /**
+ * Returns the list of separators that will be populated between the picker column fields.
+ *
+ * @return The list of separators populated between the picker column fields.
+ */
+ public final List<CharSequence> getSeparators() {
+ return mSeparators;
+ }
+
+ /**
+ * Sets the list of separators that will be populated between the Picker columns. The
+ * number of the separators should be either 1 indicating the same separator used between all
+ * the columns fields (and nothing will be placed before the first and after the last column),
+ * or must be one unit larger than the number of columns passed to {@link #setColumns(List)}.
+ * In the latter case, the list of separators corresponds to the positions before the first
+ * column all the way to the position after the last column.
+ * An empty string for a given position indicates no separators needs to be placed for that
+ * position, otherwise a TextView with the given String will be created and placed there.
+ *
+ * @param separators The list of separators to be populated between the Picker columns.
+ */
+ public final void setSeparators(List<CharSequence> separators) {
+ mSeparators.clear();
+ mSeparators.addAll(separators);
}
/**
@@ -116,6 +148,7 @@
* layout provided by {@link Picker#getPickerItemLayoutId()} or 0 if the
* layout provided by {@link Picker#getPickerItemLayoutId()} is a {link
* TextView}.
+ *
* @param textViewId View id of TextView inside a Picker item, or 0 if the Picker item is a
* TextView.
*/
@@ -125,9 +158,6 @@
/**
* Creates a Picker widget.
- * @param context
- * @param attrs
- * @param defStyleAttr
*/
public Picker(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
@@ -140,7 +170,8 @@
mVisibleColumnAlpha = 0.5f; //getFloat(R.dimen.picker_item_visible_column_item_alpha);
mInvisibleColumnAlpha = 0f; //getFloat(R.dimen.picker_item_invisible_column_item_alpha);
- mAlphaAnimDuration = 200; // mContext.getResources().getInteger(R.integer.dialog_animation_duration);
+ mAlphaAnimDuration =
+ 200; // mContext.getResources().getInteger(R.integer.dialog_animation_duration);
mDecelerateInterpolator = new DecelerateInterpolator(2.5F);
mAccelerateInterpolator = new AccelerateInterpolator(2.5F);
@@ -152,7 +183,8 @@
/**
* Get nth PickerColumn.
- * @param colIndex Index of PickerColumn.
+ *
+ * @param colIndex Index of PickerColumn.
* @return PickerColumn at colIndex or null if {@link #setColumns(List)} is not called yet.
*/
public PickerColumn getColumnAt(int colIndex) {
@@ -164,6 +196,7 @@
/**
* Get number of PickerColumns.
+ *
* @return Number of PickerColumns or 0 if {@link #setColumns(List)} is not called yet.
*/
public int getColumnsCount() {
@@ -175,9 +208,30 @@
/**
* Set columns and create Views.
- * @param columns PickerColumns to be shown in the Picker.
+ *
+ * @param columns The actual focusable columns of a picker which are scrollable if the field
+ * takes more than one value (e.g. for a DatePicker, day, month, and year fields
+ * and for TimePicker, hour, minute, and am/pm fields form the columns).
*/
public void setColumns(List<PickerColumn> columns) {
+ if (mSeparators.size() == 0) {
+ throw new IllegalStateException("Separators size is: " + mSeparators.size()
+ + ". At least one separator must be provided");
+ } else if (mSeparators.size() == 1) {
+ CharSequence separator = mSeparators.get(0);
+ mSeparators.clear();
+ mSeparators.add("");
+ for (int i = 0; i < columns.size() - 1; i++) {
+ mSeparators.add(separator);
+ }
+ mSeparators.add("");
+ } else {
+ if (mSeparators.size() != (columns.size() + 1)) {
+ throw new IllegalStateException("Separators size: " + mSeparators.size() + " must"
+ + "equal the size of columns: " + columns.size() + " + 1");
+ }
+ }
+
mColumnViews.clear();
mPickerView.removeAllViews();
mColumns = new ArrayList<PickerColumn>(columns);
@@ -186,6 +240,13 @@
}
LayoutInflater inflater = LayoutInflater.from(getContext());
int totalCol = getColumnsCount();
+
+ if (!TextUtils.isEmpty(mSeparators.get(0))) {
+ TextView separator = (TextView) inflater.inflate(
+ R.layout.lb_picker_separator, mPickerView, false);
+ separator.setText(mSeparators.get(0));
+ mPickerView.addView(separator);
+ }
for (int i = 0; i < totalCol; i++) {
final int colIndex = i;
final VerticalGridView columnView = (VerticalGridView) inflater.inflate(
@@ -202,16 +263,16 @@
// as a result of the picker getting activated, otherwise the cached views with the
// wrong alphas could be laid out.
columnView.setItemViewCacheSize(0);
- mColumnViews.add(columnView);
+ mColumnViews.add(columnView);
// add view to root
mPickerView.addView(columnView);
- // add a separator if not the last element
- if (i != totalCol - 1 && getSeparator() != null) {
+ if (!TextUtils.isEmpty(mSeparators.get(i + 1))) {
+ // add a separator if not the last element
TextView separator = (TextView) inflater.inflate(
R.layout.lb_picker_separator, mPickerView, false);
- separator.setText(getSeparator());
+ separator.setText(mSeparators.get(i + 1));
mPickerView.addView(separator);
}
@@ -224,8 +285,9 @@
/**
* When column labels change or column range changes, call this function to re-populate the
* selection list. Note this function cannot be called from RecyclerView layout/scroll pass.
+ *
* @param columnIndex Index of column to update.
- * @param column New column to update.
+ * @param column New column to update.
*/
public void setColumnAt(int columnIndex, PickerColumn column) {
mColumns.set(columnIndex, column);
@@ -239,8 +301,9 @@
/**
* Manually set current value of a column. The function will update UI and notify listeners.
- * @param columnIndex Index of column to update.
- * @param value New value of the column.
+ *
+ * @param columnIndex Index of column to update.
+ * @param value New value of the column.
* @param runAnimation True to scroll to the value or false otherwise.
*/
public void setColumnValue(int columnIndex, int value, boolean runAnimation) {
@@ -270,6 +333,7 @@
/**
* Register a callback to be invoked when the picker's value has changed.
+ *
* @param listener The callback to ad
*/
public void addOnValueChangedListener(PickerValueListener listener) {
@@ -281,6 +345,7 @@
/**
* Remove a previously installed value changed callback
+ *
* @param listener The callback to remove.
*/
public void removeOnValueChangedListener(PickerValueListener listener) {
@@ -311,7 +376,7 @@
if (columnShownAsActivated) {
setOrAnimateAlpha(view, animate, mFocusedAlpha, -1, mDecelerateInterpolator);
} else {
- setOrAnimateAlpha(view, animate, mUnfocusedAlpha, -1, mDecelerateInterpolator);
+ setOrAnimateAlpha(view, animate, mUnfocusedAlpha, -1, mDecelerateInterpolator);
}
} else {
// set alpha for remaining items in the column
@@ -343,11 +408,12 @@
/**
* Classes extending {@link Picker} can override this function to supply the
* behavior when a list has been scrolled. Subclass may call {@link #setColumnValue(int, int,
- * boolean)} and or {@link #setColumnAt(int,PickerColumn)}. Subclass should not directly call
+ * boolean)} and or {@link #setColumnAt(int, PickerColumn)}. Subclass should not directly call
* {@link PickerColumn#setCurrentValue(int)} which does not update internal state or notify
* listeners.
+ *
* @param columnIndex index of which column was changed.
- * @param newValue A new value desired to be set on the column.
+ * @param newValue A new value desired to be set on the column.
*/
public void onColumnValueChanged(int columnIndex, int newValue) {
PickerColumn column = mColumns.get(columnIndex);
@@ -425,35 +491,37 @@
private final OnChildViewHolderSelectedListener mColumnChangeListener = new
OnChildViewHolderSelectedListener() {
- @Override
- public void onChildViewHolderSelected(RecyclerView parent, RecyclerView.ViewHolder child,
- int position, int subposition) {
- PickerScrollArrayAdapter pickerScrollArrayAdapter = (PickerScrollArrayAdapter) parent
- .getAdapter();
+ @Override
+ public void onChildViewHolderSelected(RecyclerView parent,
+ RecyclerView.ViewHolder child,
+ int position, int subposition) {
+ PickerScrollArrayAdapter pickerScrollArrayAdapter =
+ (PickerScrollArrayAdapter) parent
+ .getAdapter();
- int colIndex = mColumnViews.indexOf(parent);
- updateColumnAlpha(colIndex, true);
- if (child != null) {
- int newValue = mColumns.get(colIndex).getMinValue() + position;
- onColumnValueChanged(colIndex, newValue);
- }
- }
+ int colIndex = mColumnViews.indexOf(parent);
+ updateColumnAlpha(colIndex, true);
+ if (child != null) {
+ int newValue = mColumns.get(colIndex).getMinValue() + position;
+ onColumnValueChanged(colIndex, newValue);
+ }
+ }
- };
+ };
@Override
public boolean dispatchKeyEvent(android.view.KeyEvent event) {
if (isActivated()) {
final int keyCode = event.getKeyCode();
switch (keyCode) {
- case KeyEvent.KEYCODE_DPAD_CENTER:
- case KeyEvent.KEYCODE_ENTER:
- if (event.getAction() == KeyEvent.ACTION_UP) {
- performClick();
- }
- break;
- default:
- return super.dispatchKeyEvent(event);
+ case KeyEvent.KEYCODE_DPAD_CENTER:
+ case KeyEvent.KEYCODE_ENTER:
+ if (event.getAction() == KeyEvent.ACTION_UP) {
+ performClick();
+ }
+ break;
+ default:
+ return super.dispatchKeyEvent(event);
}
return true;
}
@@ -501,9 +569,11 @@
}
}
}
+
/**
* Returns number of visible items showing in a column when it's activated. The default value
* is 3.
+ *
* @return Number of visible items showing in a column when it's activated.
*/
public float getActivatedVisibleItemCount() {
@@ -513,6 +583,7 @@
/**
* Changes number of visible items showing in a column when it's activated. The default value
* is 3.
+ *
* @param visiblePickerItems Number of visible items showing in a column when it's activated.
*/
public void setActivatedVisibleItemCount(float visiblePickerItems) {
@@ -530,6 +601,7 @@
/**
* Returns number of visible items showing in a column when it's not activated. The default
* value is 1.
+ *
* @return Number of visible items showing in a column when it's not activated.
*/
public float getVisibleItemCount() {
@@ -539,6 +611,7 @@
/**
* Changes number of visible items showing in a column when it's not activated. The default
* value is 1.
+ *
* @param pickerItems Number of visible items showing in a column when it's not activated.
*/
public void setVisibleItemCount(float pickerItems) {
@@ -605,6 +678,7 @@
* Change current selected column. Picker shows multiple items on selected column if Picker has
* focus. Picker shows multiple items on all column if Picker has no focus (e.g. a Touchscreen
* screen).
+ *
* @param columnIndex Index of column to activate.
*/
public void setSelectedColumn(int columnIndex) {
@@ -618,6 +692,7 @@
/**
* Get current activated column index.
+ *
* @return Current activated column index.
*/
public int getSelectedColumn() {
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/picker/PickerUtility.java b/v17/leanback/src/android/support/v17/leanback/widget/picker/PickerUtility.java
index 1e3a28f..bff278a 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/picker/PickerUtility.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/picker/PickerUtility.java
@@ -17,7 +17,7 @@
package android.support.v17.leanback.widget.picker;
import android.content.res.Resources;
-import android.support.v17.leanback.R;
+import android.os.Build;
import java.text.DateFormatSymbols;
import java.util.Calendar;
@@ -29,11 +29,13 @@
*/
class PickerUtility {
+ // Whether the API version supports the use of {@link DateFormat#getBestDateTimePattern()}
+ static final boolean SUPPORTS_BEST_DATE_TIME_PATTERN =
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2;
public static class DateConstant {
public final Locale locale;
public final String[] months;
public final String[] days;
- public final String dateSeparator;
private DateConstant(Locale locale, Resources resources) {
this.locale = locale;
@@ -42,7 +44,6 @@
Calendar calendar = Calendar.getInstance(locale);
days = createStringIntArrays(calendar.getMinimum(Calendar.DAY_OF_MONTH),
calendar.getMaximum(Calendar.DAY_OF_MONTH), "%02d");
- dateSeparator = resources.getString(R.string.lb_date_separator);
}
}
@@ -52,7 +53,6 @@
public final String[] hours24;
public final String[] minutes;
public final String[] ampm;
- public final String timeSeparator;
private TimeConstant(Locale locale, Resources resources) {
this.locale = locale;
@@ -61,7 +61,6 @@
hours24 = createStringIntArrays(0, 23, "%02d");
minutes = createStringIntArrays(0, 59, "%02d");
ampm = symbols.getAmPmStrings();
- timeSeparator = resources.getString(R.string.lb_time_separator);
}
}
diff --git a/v17/leanback/src/android/support/v17/leanback/widget/picker/TimePicker.java b/v17/leanback/src/android/support/v17/leanback/widget/picker/TimePicker.java
index 29059ba..09a0ea9 100644
--- a/v17/leanback/src/android/support/v17/leanback/widget/picker/TimePicker.java
+++ b/v17/leanback/src/android/support/v17/leanback/widget/picker/TimePicker.java
@@ -18,18 +18,17 @@
import android.content.Context;
import android.content.res.TypedArray;
-import android.os.Build;
import android.support.annotation.IntRange;
import android.support.v17.leanback.R;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.view.View;
-import android.view.ViewGroup;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.List;
import java.util.Locale;
/**
@@ -62,8 +61,6 @@
PickerColumn mHourColumn;
PickerColumn mMinuteColumn;
PickerColumn mAmPmColumn;
- private ViewGroup mPickerView;
- private View mAmPmSeparatorView;
int mColHourIndex;
int mColMinuteIndex;
int mColAmPmIndex;
@@ -76,6 +73,8 @@
private int mCurrentMinute;
private int mCurrentAmPmIndex;
+ private String mTimePickerFormat;
+
/**
* Constructor called when inflating a TimePicker widget. This version uses a default style of
* 0, so the only attribute values applied are those in the Context's Theme and the given
@@ -105,8 +104,6 @@
mConstant = PickerUtility.getTimeConstantInstance(Locale.getDefault(),
context.getResources());
- setSeparator(mConstant.timeSeparator);
- mPickerView = findViewById(R.id.picker);
final TypedArray attributesArray = context.obtainStyledAttributes(attrs,
R.styleable.lbTimePicker);
mIs24hFormat = attributesArray.getBoolean(R.styleable.lbTimePicker_is24HourFormat,
@@ -114,25 +111,17 @@
boolean useCurrentTime = attributesArray.getBoolean(R.styleable.lbTimePicker_useCurrentTime,
true);
- updateColumns(getTimePickerFormat());
-
- // The column range for the minute and AM/PM column is static and does not change, whereas
- // the hour column range can change depending on whether 12 or 24 hour format is set at
- // any given time.
- updateHourColumn(false);
- updateMin(mMinuteColumn, 0);
- updateMax(mMinuteColumn, 59);
-
- updateMin(mAmPmColumn, 0);
- updateMax(mAmPmColumn, 1);
-
- updateAmPmColumn();
+ // The following 2 methods must be called after setting mIs24hFormat since this attribute is
+ // used to extract the time format string.
+ updateColumns();
+ updateColumnsRange();
if (useCurrentTime) {
Calendar currentDate = PickerUtility.getCalendarForLocale(null,
mConstant.locale);
setHour(currentDate.get(Calendar.HOUR_OF_DAY));
setMinute(currentDate.get(Calendar.MINUTE));
+ setAmPmValue();
}
}
@@ -153,22 +142,104 @@
}
/**
+ * @return The best localized representation of time for the current locale
+ */
+ String getBestHourMinutePattern() {
+ final String hourPattern;
+ if (PickerUtility.SUPPORTS_BEST_DATE_TIME_PATTERN) {
+ hourPattern = DateFormat.getBestDateTimePattern(mConstant.locale, mIs24hFormat ? "Hma"
+ : "hma");
+ } else {
+ final java.text.DateFormat dateFormat =
+ SimpleDateFormat.getTimeInstance(SimpleDateFormat.FULL, mConstant.locale);
+ if (dateFormat instanceof SimpleDateFormat) {
+ String defaultPattern = ((SimpleDateFormat) dateFormat).toPattern();
+ defaultPattern = defaultPattern.replace("s", "");
+ if (mIs24hFormat) {
+ defaultPattern = defaultPattern.replace('h', 'H');
+ }
+ hourPattern = defaultPattern;
+ } else {
+ hourPattern = mIs24hFormat ? "H:mma" : "h:mma";
+ }
+ }
+ return TextUtils.isEmpty(hourPattern) ? "h:mma" : hourPattern;
+ }
+
+ /**
+ * Extracts the separators used to separate time fields (including before the first and after
+ * the last time field). The separators can vary based on the individual locale and 12 or
+ * 24 hour time format, defined in the Unicode CLDR and cannot be supposed to be ":".
+ *
+ * See http://unicode.org/cldr/trac/browser/trunk/common/main
+ *
+ * For example, for english in 12 hour format
+ * (time pattern of "h:mm a"), this will return {"", ":", "", ""}, where the first separator
+ * indicates nothing needs to be displayed to the left of the hour field, ":" needs to be
+ * displayed to the right of hour field, and so forth.
+ *
+ * @return The ArrayList of separators to populate between the actual time fields in the
+ * TimePicker.
+ */
+ List<CharSequence> extractSeparators() {
+ // Obtain the time format string per the current locale (e.g. h:mm a)
+ String hmaPattern = getBestHourMinutePattern();
+
+ List<CharSequence> separators = new ArrayList<>();
+ StringBuilder sb = new StringBuilder();
+ char lastChar = '\0';
+ // See http://www.unicode.org/reports/tr35/tr35-dates.html for hour formats
+ final char[] timeFormats = {'H', 'h', 'K', 'k', 'm', 'M', 'a'};
+ boolean processingQuote = false;
+ for (int i = 0; i < hmaPattern.length(); i++) {
+ char c = hmaPattern.charAt(i);
+ if (c == ' ') {
+ continue;
+ }
+ if (c == '\'') {
+ if (!processingQuote) {
+ sb.setLength(0);
+ processingQuote = true;
+ } else {
+ processingQuote = false;
+ }
+ continue;
+ }
+ if (processingQuote) {
+ sb.append(c);
+ } else {
+ if (isAnyOf(c, timeFormats)) {
+ if (c != lastChar) {
+ separators.add(sb.toString());
+ sb.setLength(0);
+ }
+ } else {
+ sb.append(c);
+ }
+ }
+ lastChar = c;
+ }
+ separators.add(sb.toString());
+ return separators;
+ }
+
+ private static boolean isAnyOf(char c, char[] any) {
+ for (int i = 0; i < any.length; i++) {
+ if (c == any[i]) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
*
* @return the time picker format string based on the current system locale and the layout
* direction
*/
- private String getTimePickerFormat() {
+ private String extractTimeFields() {
// Obtain the time format string per the current locale (e.g. h:mm a)
- String hmaPattern;
- if (Build.VERSION.SDK_INT >= 18) {
- hmaPattern = DateFormat.getBestDateTimePattern(mConstant.locale, "hma");
- } else {
- // getTimeInstance is not very reliable and it may not include 'a' (for AM/PM)
- // in the returned pattern string. In those cases, we assume that am/pm appears at the
- // end of the fields. Need to find a more reliable way for API below 18.
- hmaPattern = ((SimpleDateFormat) java.text.DateFormat
- .getTimeInstance(java.text.DateFormat.FULL, mConstant.locale)).toPattern();
- }
+ String hmaPattern = getBestHourMinutePattern();
boolean isRTL = TextUtils.getLayoutDirectionFromLocale(mConstant.locale) == View
.LAYOUT_DIRECTION_RTL;
@@ -177,21 +248,35 @@
// Hour will always appear to the left of minutes regardless of layout direction.
String timePickerFormat = isRTL ? "mh" : "hm";
- return isAmPmAtEnd ? (timePickerFormat + "a") : ("a" + timePickerFormat);
+ if (is24Hour()) {
+ return timePickerFormat;
+ } else {
+ return isAmPmAtEnd ? (timePickerFormat + "a") : ("a" + timePickerFormat);
+ }
}
- private void updateColumns(String timePickerFormat) {
- if (TextUtils.isEmpty(timePickerFormat)) {
- timePickerFormat = "hma";
+ private void updateColumns() {
+ String timePickerFormat = getBestHourMinutePattern();
+ if (TextUtils.equals(timePickerFormat, mTimePickerFormat)) {
+ return;
}
- timePickerFormat = timePickerFormat.toUpperCase();
+ mTimePickerFormat = timePickerFormat;
+
+ String timeFieldsPattern = extractTimeFields();
+ List<CharSequence> separators = extractSeparators();
+ if (separators.size() != (timeFieldsPattern.length() + 1)) {
+ throw new IllegalStateException("Separators size: " + separators.size() + " must equal"
+ + " the size of timeFieldsPattern: " + timeFieldsPattern.length() + " + 1");
+ }
+ setSeparators(separators);
+ timeFieldsPattern = timeFieldsPattern.toUpperCase();
mHourColumn = mMinuteColumn = mAmPmColumn = null;
mColHourIndex = mColMinuteIndex = mColAmPmIndex = -1;
ArrayList<PickerColumn> columns = new ArrayList<>(3);
- for (int i = 0; i < timePickerFormat.length(); i++) {
- switch (timePickerFormat.charAt(i)) {
+ for (int i = 0; i < timeFieldsPattern.length(); i++) {
+ switch (timeFieldsPattern.charAt(i)) {
case 'H':
columns.add(mHourColumn = new PickerColumn());
mHourColumn.setStaticLabels(mConstant.hours24);
@@ -214,38 +299,28 @@
}
}
setColumns(columns);
- mAmPmSeparatorView = mPickerView.getChildAt(mColAmPmIndex == 0 ? 1 :
- (2 * mColAmPmIndex - 1));
}
- /**
- * Updates the range in the hour column and notifies column changed if notifyChanged is true.
- * Hour column can have either [0-23] or [1-12] depending on whether the 24 hour format is set
- * or not.
- *
- * @param notifyChanged {code true} if we should notify data set changed on the hour column,
- * {@code false} otherwise.
- */
- private void updateHourColumn(boolean notifyChanged) {
+ private void updateColumnsRange() {
+ // updateHourColumn(false);
updateMin(mHourColumn, mIs24hFormat ? 0 : 1);
updateMax(mHourColumn, mIs24hFormat ? 23 : 12);
- if (notifyChanged) {
- setColumnAt(mColHourIndex, mHourColumn);
+
+ updateMin(mMinuteColumn, 0);
+ updateMax(mMinuteColumn, 59);
+
+ if (mAmPmColumn != null) {
+ updateMin(mAmPmColumn, 0);
+ updateMax(mAmPmColumn, 1);
}
}
/**
- * Updates AM/PM column depending on whether the 24 hour format is set or not. The visibility of
- * this column is set to {@code GONE} for a 24 hour format, and {@code VISIBLE} in 12 hour
- * format. This method also updates the value of this column for a 12 hour format.
+ * Updates the value of AM/PM column for a 12 hour time format. The correct value should already
+ * be calculated before this method is called by calling setHour.
*/
- private void updateAmPmColumn() {
- if (mIs24hFormat) {
- mColumnViews.get(mColAmPmIndex).setVisibility(GONE);
- mAmPmSeparatorView.setVisibility(GONE);
- } else {
- mColumnViews.get(mColAmPmIndex).setVisibility(VISIBLE);
- mAmPmSeparatorView.setVisibility(VISIBLE);
+ private void setAmPmValue() {
+ if (!is24Hour()) {
setColumnValue(mColAmPmIndex, mCurrentAmPmIndex, false);
}
}
@@ -261,7 +336,7 @@
throw new IllegalArgumentException("hour: " + hour + " is not in [0-23] range in");
}
mCurrentHour = hour;
- if (!mIs24hFormat) {
+ if (!is24Hour()) {
if (mCurrentHour >= HOURS_IN_HALF_DAY) {
mCurrentAmPmIndex = PM_INDEX;
if (mCurrentHour > HOURS_IN_HALF_DAY) {
@@ -273,7 +348,7 @@
mCurrentHour = HOURS_IN_HALF_DAY;
}
}
- updateAmPmColumn();
+ setAmPmValue();
}
setColumnValue(mColHourIndex, mCurrentHour, false);
}
@@ -301,9 +376,6 @@
* @see #getMinute()
*/
public void setMinute(@IntRange(from = 0, to = 59) int minute) {
- if (mCurrentMinute == minute) {
- return;
- }
if (minute < 0 || minute > 59) {
throw new IllegalArgumentException("minute: " + minute + " is not in [0-59] range.");
}
@@ -334,10 +406,14 @@
}
// the ordering of these statements is important
int currentHour = getHour();
+ int currentMinute = getMinute();
mIs24hFormat = is24Hour;
- updateHourColumn(true);
+ updateColumns();
+ updateColumnsRange();
+
setHour(currentHour);
- updateAmPmColumn();
+ setMinute(currentMinute);
+ setAmPmValue();
}
/**
diff --git a/v17/leanback/tests/AndroidManifest.xml b/v17/leanback/tests/AndroidManifest.xml
index b21246e..dc8c963 100644
--- a/v17/leanback/tests/AndroidManifest.xml
+++ b/v17/leanback/tests/AndroidManifest.xml
@@ -22,11 +22,11 @@
<activity android:name="android.support.v17.leanback.widget.GridActivity"
android:exported="true"/>
- <activity android:name="android.support.v17.leanback.widget.TimePickerActivity"
+ <activity android:name="android.support.v17.leanback.widget.picker.TimePickerActivity"
android:exported="true"
android:theme="@style/Theme.Leanback"/>
- <activity android:name="android.support.v17.leanback.widget.DatePickerActivity"
+ <activity android:name="android.support.v17.leanback.widget.picker.DatePickerActivity"
android:exported="true"
android:theme="@style/Theme.Leanback"/>
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/GridWidgetTest.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/GridWidgetTest.java
index 1f6bdb2..61974cc 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/GridWidgetTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/GridWidgetTest.java
@@ -920,8 +920,7 @@
void preparePredictiveLayout() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(GridActivity.EXTRA_LAYOUT_RESOURCE_ID,
- R.layout.horizontal_linear);
+ intent.putExtra(GridActivity.EXTRA_LAYOUT_RESOURCE_ID, R.layout.horizontal_linear);
intent.putExtra(GridActivity.EXTRA_NUM_ITEMS, 100);
initActivity(intent);
mOrientation = BaseGridView.HORIZONTAL;
@@ -1016,6 +1015,50 @@
}
@Test
+ public void testPredictiveOnMeasureWrapContent() throws Throwable {
+ Intent intent = new Intent();
+ intent.putExtra(GridActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ R.layout.horizontal_linear_wrap_content);
+ int count = 50;
+ intent.putExtra(GridActivity.EXTRA_NUM_ITEMS, count);
+ initActivity(intent);
+ mOrientation = BaseGridView.HORIZONTAL;
+ mNumRows = 1;
+
+ waitForScrollIdle(mVerifyLayout);
+ mActivityTestRule.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mGridView.setHasFixedSize(false);
+ }
+ });
+
+ for (int i = 0; i < 30; i++) {
+ final int oldCount = count;
+ final int newCount = i;
+ mActivityTestRule.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (oldCount > 0) {
+ mActivity.removeItems(0, oldCount);
+ }
+ if (newCount > 0) {
+ int[] newItems = new int[newCount];
+ for (int i = 0; i < newCount; i++) {
+ newItems[i] = 400;
+ }
+ mActivity.addItems(0, newItems);
+ }
+ }
+ });
+ waitForItemAnimationStart();
+ waitForItemAnimation();
+ count = newCount;
+ }
+
+ }
+
+ @Test
public void testPredictiveLayoutRemove4() throws Throwable {
Intent intent = new Intent();
intent.putExtra(GridActivity.EXTRA_LAYOUT_RESOURCE_ID,
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/DatePickerActivity.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/DatePickerActivity.java
similarity index 95%
rename from v17/leanback/tests/java/android/support/v17/leanback/widget/DatePickerActivity.java
rename to v17/leanback/tests/java/android/support/v17/leanback/widget/picker/DatePickerActivity.java
index eda702f..dda9c91 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/DatePickerActivity.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/DatePickerActivity.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.support.v17.leanback.widget;
+package android.support.v17.leanback.widget.picker;
import android.app.Activity;
import android.os.Bundle;
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/DatePickerTest.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/DatePickerTest.java
similarity index 82%
rename from v17/leanback/tests/java/android/support/v17/leanback/widget/DatePickerTest.java
rename to v17/leanback/tests/java/android/support/v17/leanback/widget/picker/DatePickerTest.java
index e2d2e99..c25838e 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/DatePickerTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/DatePickerTest.java
@@ -14,10 +14,11 @@
* limitations under the License.
*/
-package android.support.v17.leanback.widget;
+package android.support.v17.leanback.widget.picker;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.content.Context;
@@ -27,16 +28,19 @@
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.support.v17.leanback.test.R;
-import android.support.v17.leanback.widget.picker.DatePicker;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Arrays;
+import java.util.List;
+
@LargeTest
@RunWith(AndroidJUnit4.class)
public class DatePickerTest {
@@ -55,9 +59,13 @@
new ActivityTestRule<>(DatePickerActivity.class, false, false);
private DatePickerActivity mActivity;
+ @Before
+ public void setUp() throws Exception {
+ mContext = InstrumentationRegistry.getTargetContext();
+ }
+
public void initActivity(Intent intent) throws Throwable {
mActivity = mActivityTestRule.launchActivity(intent);
- mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
mDatePickerView = (DatePicker) mActivity.findViewById(R.id.date_picker);
mDatePickerInnerView = (ViewGroup) mDatePickerView.findViewById(R.id.picker);
mDatePickerView.setActivatedVisibleItemCount(3);
@@ -375,6 +383,86 @@
}
}
+ @Test
+ public void testExtractSeparatorsForDifferentLocales() throws Throwable {
+ // date pattern for en_US (English)
+ DatePicker datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "M/d/y";
+ }
+ };
+ List<CharSequence> actualSeparators = datePicker.extractSeparators();
+ List<String> expectedSeparators = Arrays.asList(new String[]{"", "/", "/", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // date pattern for fa_IR (Farsi)
+ datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "y/M/d";
+ }
+ };
+ actualSeparators = datePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[]{"", "/", "/", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // date pattern for ar_EG (Arabic)
+ datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "d/M/y";
+ }
+ };
+ actualSeparators = datePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[]{"", "/", "/", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // date pattern for cs_CZ (Czech)
+ datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "d. M. y";
+ }
+ };
+ actualSeparators = datePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[]{"", ".", ".", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // date pattern for hr_HR (Croatian)
+ datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "dd. MM. y.";
+ }
+ };
+ actualSeparators = datePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[]{"", ".", ".", "."});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // date pattern for hr_HR (Bulgarian)
+ datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "d.MM.y 'r'.";
+ }
+ };
+ actualSeparators = datePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[]{"", ".", ".", "r."});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // date pattern for en_XA (English pseudo-locale)
+ datePicker = new DatePicker(mContext, null) {
+ @Override
+ String getBestYearMonthDayPattern(String datePickerFormat) {
+ return "[M/d/y]";
+ }
+ };
+ actualSeparators = datePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[]{"[", "/", "/", "]"});
+ assertEquals(expectedSeparators, actualSeparators);
+ }
+
private void sendKeys(int ...keys) {
for (int i = 0; i < keys.length; i++) {
InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(keys[i]);
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/TimePickerActivity.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/TimePickerActivity.java
similarity index 95%
rename from v17/leanback/tests/java/android/support/v17/leanback/widget/TimePickerActivity.java
rename to v17/leanback/tests/java/android/support/v17/leanback/widget/picker/TimePickerActivity.java
index 11c4d3c..6cf7042 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/TimePickerActivity.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/TimePickerActivity.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package android.support.v17.leanback.widget;
+package android.support.v17.leanback.widget.picker;
import android.app.Activity;
import android.os.Bundle;
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/widget/TimePickerTest.java b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/TimePickerTest.java
similarity index 80%
rename from v17/leanback/tests/java/android/support/v17/leanback/widget/TimePickerTest.java
rename to v17/leanback/tests/java/android/support/v17/leanback/widget/picker/TimePickerTest.java
index 7146d31..980eb1f 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/widget/TimePickerTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/widget/picker/TimePickerTest.java
@@ -14,10 +14,11 @@
* limitations under the License.
*/
-package android.support.v17.leanback.widget;
+package android.support.v17.leanback.widget.picker;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import android.content.Context;
import android.content.Intent;
@@ -26,15 +27,18 @@
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.support.v17.leanback.test.R;
-import android.support.v17.leanback.widget.picker.TimePicker;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.Arrays;
+import java.util.List;
+
@LargeTest
@RunWith(AndroidJUnit4.class)
public class TimePickerTest {
@@ -43,8 +47,6 @@
private static final long TRANSITION_LENGTH = 1000;
private static final long UPDATE_LENGTH = 1000;
-
- Context mContext;
View mViewAbove;
TimePicker mTimePicker12HourView;
TimePicker mTimePicker24HourView;
@@ -54,6 +56,12 @@
public ActivityTestRule<TimePickerActivity> mActivityTestRule =
new ActivityTestRule<>(TimePickerActivity.class, false, false);
private TimePickerActivity mActivity;
+ private Context mContext;
+
+ @Before
+ public void setUp() throws Exception {
+ mContext = InstrumentationRegistry.getTargetContext();
+ }
public void initActivity(Intent intent) throws Throwable {
mActivity = mActivityTestRule.launchActivity(intent);
@@ -67,7 +75,7 @@
}
});
- if (intent.getIntExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ if (intent.getIntExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets) == R.layout.timepicker_with_other_widgets) {
mViewAbove = mActivity.findViewById(R.id.above_picker);
mViewBelow = mActivity.findViewById(R.id.below_picker);
@@ -79,7 +87,7 @@
mTimePicker24HourView.setActivated(!mTimePicker24HourView.isActivated());
}
});
- } else if (intent.getIntExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ } else if (intent.getIntExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets) == R.layout.timepicker_alone) {
// A layout with only a TimePicker widget that is initially activated.
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -95,9 +103,10 @@
@Test
public void testSetHourIn24hFormat() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
+
mActivityTestRule.runOnUiThread(new Runnable() {
@Override
public void run() {
@@ -152,7 +161,7 @@
@Test
public void testSetHourIn12hFormat() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -209,7 +218,7 @@
@Test
public void testSetMinuteIn24hFormat() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -246,7 +255,7 @@
@Test
public void testSetMinuteIn12hFormat() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -284,7 +293,7 @@
@Test
public void testAmToPmTransition() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -326,7 +335,7 @@
@Test
public void testPmToAmTransition() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -368,7 +377,7 @@
@Test
public void test12To24HourFormatTransition() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -400,7 +409,7 @@
@Test
public void test24To12HourFormatTransition() throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_with_other_widgets);
initActivity(intent);
mActivityTestRule.runOnUiThread(new Runnable() {
@@ -433,7 +442,7 @@
public void testInitiallyActiveTimePicker()
throws Throwable {
Intent intent = new Intent();
- intent.putExtra(DatePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
+ intent.putExtra(TimePickerActivity.EXTRA_LAYOUT_RESOURCE_ID,
R.layout.timepicker_alone);
initActivity(intent);
@@ -473,12 +482,106 @@
sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT);
Thread.sleep(TRANSITION_LENGTH);
assertThat("The third column of TimePicker should hold focus after scrolling right",
- mTimePickerInnerView.getChildAt(4).hasFocus(), is(true));
+ mTimePickerInnerView.getChildAt(3).hasFocus(), is(true));
sendKeys(KeyEvent.KEYCODE_DPAD_UP);
Thread.sleep(TRANSITION_LENGTH);
assertThat("The third column of TimePicker should still hold focus after scrolling down",
- mTimePickerInnerView.getChildAt(4).hasFocus(), is(true));
+ mTimePickerInnerView.getChildAt(3).hasFocus(), is(true));
+ }
+
+ @Test
+ public void testExtractSeparatorsForDifferentLocales() throws Throwable {
+ // A typical time pattern for different locales in 12-hour format
+ TimePicker timePicker = new TimePicker(mContext, null) {
+ @Override
+ String getBestHourMinutePattern() {
+ return "h:mm a";
+ }
+ };
+ List<CharSequence> actualSeparators = timePicker.extractSeparators();
+ List<String> expectedSeparators = Arrays.asList(new String[] {"", ":", "", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // time pattern for ja_JP in 12 hour format
+ timePicker = new TimePicker(mContext, null) {
+ @Override
+ String getBestHourMinutePattern() {
+ return "aK:mm";
+ }
+
+ @Override
+ public boolean is24Hour() {
+ return false;
+ }
+ };
+ actualSeparators = timePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[] {"", "", ":", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // time pattern for fr_CA in 24 hour format
+ timePicker = new TimePicker(mContext, null) {
+ @Override
+ String getBestHourMinutePattern() {
+ return "HH 'h' mm";
+ }
+
+ @Override
+ public boolean is24Hour() {
+ return true;
+ }
+ };
+ actualSeparators = timePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[] {"", "h", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // time pattern for hsb_DE in 24 hour format
+ timePicker = new TimePicker(mContext, null) {
+ @Override
+ String getBestHourMinutePattern() {
+ return "H:mm 'hodz'";
+ }
+
+ @Override
+ public boolean is24Hour() {
+ return true;
+ }
+ };
+ actualSeparators = timePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[] {"", ":", "hodz"});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // time pattern for ko_KR in 12 hour format
+ timePicker = new TimePicker(mContext, null) {
+ @Override
+ String getBestHourMinutePattern() {
+ return "a h:mm";
+ }
+
+ @Override
+ public boolean is24Hour() {
+ return false;
+ }
+ };
+ actualSeparators = timePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[] {"", "", ":", ""});
+ assertEquals(expectedSeparators, actualSeparators);
+
+ // time pattern for fa_IR in 24 hour format
+ timePicker = new TimePicker(mContext, null) {
+ @Override
+ String getBestHourMinutePattern() {
+ return "H:mm";
+ }
+
+ @Override
+ public boolean is24Hour() {
+ return true;
+ }
+ };
+ actualSeparators = timePicker.extractSeparators();
+ expectedSeparators = Arrays.asList(new String[] {"", ":", ""});
+ assertEquals(expectedSeparators, actualSeparators);
}
private void sendKeys(int ...keys) {
diff --git a/v17/leanback/tests/res/layout/horizontal_linear_wrap_content.xml b/v17/leanback/tests/res/layout/horizontal_linear_wrap_content.xml
new file mode 100644
index 0000000..c0e2715
--- /dev/null
+++ b/v17/leanback/tests/res/layout/horizontal_linear_wrap_content.xml
@@ -0,0 +1,39 @@
+<!--
+ ~ Copyright (C) 2017 The Android Open Source Project
+ ~
+ ~ 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.
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:lb="http://schemas.android.com/apk/res-auto"
+ android:orientation="vertical"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ >
+ <android.support.v17.leanback.widget.HorizontalGridViewEx
+ android:id="@+id/gridview"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:clipToPadding="false"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:background="#00ffff"
+ android:horizontalSpacing="12dip"
+ android:verticalSpacing="24dip"
+ lb:rowHeight="wrap_content"
+ android:paddingBottom="12dip"
+ android:paddingLeft="12dip"
+ android:paddingRight="12dip"
+ android:paddingTop="12dip" />
+</LinearLayout>
diff --git a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_14w.png b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_14w.png
index 371469c..035e901 100644
--- a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_14w.png
+++ b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_14w.png
Binary files differ
diff --git a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_15w.png b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_15w.png
index e477260..6688631 100644
--- a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_15w.png
+++ b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_15w.png
Binary files differ
diff --git a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_16w.png b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_16w.png
index 19a1bd3..0dd9fce 100644
--- a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_16w.png
+++ b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_16w.png
Binary files differ
diff --git a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_17w.png b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_17w.png
index 79dc733..a15b133 100644
--- a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_17w.png
+++ b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_17w.png
Binary files differ
diff --git a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_18w.png b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_18w.png
index 6d921c0..1cd259e 100644
--- a/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_18w.png
+++ b/wear/res/drawable-hdpi/ws_switch_thumb_mtrl_18w.png
Binary files differ
diff --git a/wear/res/drawable-hdpi/ws_switch_track_mtrl.png b/wear/res/drawable-hdpi/ws_switch_track_mtrl.png
index ecee3e1..8ed1c97 100644
--- a/wear/res/drawable-hdpi/ws_switch_track_mtrl.png
+++ b/wear/res/drawable-hdpi/ws_switch_track_mtrl.png
Binary files differ
diff --git a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_14w.png b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_14w.png
index 7f7ca14..119207b 100644
--- a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_14w.png
+++ b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_14w.png
Binary files differ
diff --git a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_15w.png b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_15w.png
index 52120b8..b89c86a 100644
--- a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_15w.png
+++ b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_15w.png
Binary files differ
diff --git a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_16w.png b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_16w.png
index d6e9be9..7528731 100644
--- a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_16w.png
+++ b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_16w.png
Binary files differ
diff --git a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_17w.png b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_17w.png
index 8d76393..dba351f 100644
--- a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_17w.png
+++ b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_17w.png
Binary files differ
diff --git a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_18w.png b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_18w.png
index ca9c66e..ab7b1df 100644
--- a/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_18w.png
+++ b/wear/res/drawable-xhdpi/ws_switch_thumb_mtrl_18w.png
Binary files differ
diff --git a/wear/res/drawable-xhdpi/ws_switch_track_mtrl.png b/wear/res/drawable-xhdpi/ws_switch_track_mtrl.png
index 1aa5442..1769795 100644
--- a/wear/res/drawable-xhdpi/ws_switch_track_mtrl.png
+++ b/wear/res/drawable-xhdpi/ws_switch_track_mtrl.png
Binary files differ
diff --git a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_14w.png b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_14w.png
index c0d72d7..8a00760 100644
--- a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_14w.png
+++ b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_14w.png
Binary files differ
diff --git a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_15w.png b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_15w.png
index d7c0ec0..64a0cab 100644
--- a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_15w.png
+++ b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_15w.png
Binary files differ
diff --git a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_16w.png b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_16w.png
index 5815ba9..ce7369e 100644
--- a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_16w.png
+++ b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_16w.png
Binary files differ
diff --git a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_17w.png b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_17w.png
index 41da8c0..398e3f2 100644
--- a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_17w.png
+++ b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_17w.png
Binary files differ
diff --git a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_18w.png b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_18w.png
index 975eb01..1cf40e2 100644
--- a/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_18w.png
+++ b/wear/res/drawable-xxhdpi/ws_switch_thumb_mtrl_18w.png
Binary files differ
diff --git a/wear/res/drawable-xxhdpi/ws_switch_track_mtrl.png b/wear/res/drawable-xxhdpi/ws_switch_track_mtrl.png
index af2042b..a329817 100644
--- a/wear/res/drawable-xxhdpi/ws_switch_track_mtrl.png
+++ b/wear/res/drawable-xxhdpi/ws_switch_track_mtrl.png
Binary files differ