ایجاد لیست در Wear OS
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
روش Compose را امتحان کنید
Jetpack Compose on Wear OS جعبه ابزار UI توصیه شده برای Wear OS است.
فهرستها به کاربران اجازه میدهند یک مورد را از میان مجموعهای از گزینهها به راحتی در دستگاههای Wear OS انتخاب کنند.
کتابخانه Wearable UI شامل کلاس WearableRecyclerView
است که یک پیاده سازی RecyclerView
برای ایجاد لیست های بهینه شده برای دستگاه های پوشیدنی است. می توانید با ایجاد یک کانتینر جدید WearableRecyclerView
از این رابط در برنامه پوشیدنی خود استفاده کنید.
از WearableRecyclerView
برای فهرستی طولانی از موارد ساده، مانند راهانداز برنامه یا فهرستی از مخاطبین، استفاده کنید. هر مورد ممکن است یک رشته کوتاه و یک نماد مرتبط داشته باشد. از طرف دیگر، هر مورد ممکن است فقط یک رشته یا یک نماد داشته باشد.
توجه: از چیدمان های پیچیده خودداری کنید. کاربران فقط باید به یک آیتم نگاهی بیندازند تا بفهمند چیست، به خصوص با اندازه صفحه نمایش محدود ابزارهای پوشیدنی.
با گسترش کلاس RecyclerView
موجود، API های WearableRecyclerView
به طور پیش فرض لیستی از موارد قابل پیمایش عمودی را در یک لیست مستقیم نمایش می دهند. همچنین میتوانید از APIهای WearableRecyclerView
برای انتخاب طرحبندی منحنی و حرکت چرخشی دایرهای در برنامههای پوشیدنی خود استفاده کنید.

شکل 1. نمای فهرست پیش فرض در Wear OS.
این راهنما به شما نشان میدهد که چگونه از کلاس WearableRecyclerView
برای ایجاد فهرستها در برنامههای Wear OS خود، نحوه انتخاب طرحبندی منحنی برای موارد قابل پیمایش خود، و نحوه سفارشیسازی ظاهر کودکان در حین پیمایش استفاده کنید.
WearableRecyclerView را با استفاده از XML به یک فعالیت اضافه کنید
طرح زیر یک WearableRecyclerView
را به یک فعالیت اضافه می کند:
<androidx.wear.widget.WearableRecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/recycler_launcher_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
مثال زیر WearableRecyclerView
اعمال شده روی یک فعالیت را نشان می دهد:
کاتلین
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
...
}
جاوا
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
...
}
یک طرح منحنی ایجاد کنید

برای ایجاد یک طرح منحنی برای موارد قابل پیمایش در برنامه پوشیدنی خود، موارد زیر را انجام دهید:
- از
WearableRecyclerView
به عنوان محفظه اصلی خود در طرح XML مربوطه استفاده کنید. - متد
setEdgeItemsCenteringEnabled(boolean)
را روی true
تنظیم کنید. این به صورت عمودی اولین و آخرین موارد موجود در لیست را روی صفحه در مرکز قرار می دهد. - از متد
WearableRecyclerView.setLayoutManager()
برای تنظیم چیدمان موارد روی صفحه استفاده کنید.
کاتلین
wearableRecyclerView.apply {
// To align the edge children (first and last) with the center of the screen.
isEdgeItemsCenteringEnabled = true
...
layoutManager = WearableLinearLayoutManager(this@MainActivity)
}
جاوا
// To align the edge children (first and last) with the center of the screen.
wearableRecyclerView.setEdgeItemsCenteringEnabled(true);
...
wearableRecyclerView.setLayoutManager(
new WearableLinearLayoutManager(this));
اگر برنامه شما دارای الزامات خاصی برای سفارشی کردن ظاهر کودکان در حین پیمایش است - به عنوان مثال، تغییر مقیاس نمادها و متن در حالی که موارد از مرکز حرکت می کنند - کلاس WearableLinearLayoutManager.LayoutCallback
را گسترش دهید و روش onLayoutFinished
را لغو کنید.
تکه کد زیر نمونه ای از سفارشی کردن پیمایش موارد را برای مقیاس دورتر از مرکز با گسترش کلاس WearableLinearLayoutManager.LayoutCallback
نشان می دهد:
کاتلین
/** How much icons should scale, at most. */
private const val MAX_ICON_PROGRESS = 0.65f
class CustomScrollingLayoutCallback : WearableLinearLayoutManager.LayoutCallback() {
private var progressToCenter: Float = 0f
override fun onLayoutFinished(child: View, parent: RecyclerView) {
child.apply {
// Figure out % progress from top to bottom.
val centerOffset = height.toFloat() / 2.0f / parent.height.toFloat()
val yRelativeToCenterOffset = y / parent.height + centerOffset
// Normalize for center.
progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset)
// Adjust to the maximum scale.
progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS)
scaleX = 1 - progressToCenter
scaleY = 1 - progressToCenter
}
}
}
جاوا
public class CustomScrollingLayoutCallback extends WearableLinearLayoutManager.LayoutCallback {
/** How much icons should scale, at most. */
private static final float MAX_ICON_PROGRESS = 0.65f;
private float progressToCenter;
@Override
public void onLayoutFinished(View child, RecyclerView parent) {
// Figure out % progress from top to bottom.
float centerOffset = ((float) child.getHeight() / 2.0f) / (float) parent.getHeight();
float yRelativeToCenterOffset = (child.getY() / parent.getHeight()) + centerOffset;
// Normalize for center.
progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset);
// Adjust to the maximum scale.
progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS);
child.setScaleX(1 - progressToCenter);
child.setScaleY(1 - progressToCenter);
}
}
کاتلین
wearableRecyclerView.layoutManager =
WearableLinearLayoutManager(this, CustomScrollingLayoutCallback())
جاوا
CustomScrollingLayoutCallback customScrollingLayoutCallback =
new CustomScrollingLayoutCallback();
wearableRecyclerView.setLayoutManager(
new WearableLinearLayoutManager(this, customScrollingLayoutCallback));
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Create lists on Wear OS\n\nTry the Compose way \nJetpack Compose on Wear OS is the recommended UI toolkit for Wear OS. \n[Create lists using Compose on Wear OS →](/training/wearables/compose/lists) \n\n\nLists let users select an item from a set of choices easily on Wear OS devices.\n\n\nThe Wearable UI Library includes the\n[`WearableRecyclerView`](/reference/androidx/wear/widget/WearableRecyclerView) class, which is a\n[`RecyclerView`](/reference/androidx/recyclerview/widget/RecyclerView)\nimplementation for creating lists optimized for wearable devices. You can use this\ninterface in your wearable app by creating a new `WearableRecyclerView` container.\n\n\nUse a `WearableRecyclerView` for a\nlong list of simple items, such as an application launcher or a list of contacts. Each item might\nhave a short string and an associated icon. Alternatively, each item might have only a string\nor an icon.\n\n\n**Note:** Avoid complex layouts. Users should only need to glance at an item to\nunderstand what it is, especially with wearables' limited screen size.\n\n\nBy extending the existing `RecyclerView` class, `WearableRecyclerView`\nAPIs display a vertically scrollable list of items in a straight list by default. You can also use\nthe `WearableRecyclerView` APIs to opt-in for a curved layout and\na [circular scrolling gesture](/reference/androidx/wear/widget/WearableRecyclerView#setCircularScrollingGestureEnabled(boolean))\nin your wearable apps.\n\n**Figure 1.**\nDefault list view on Wear OS.\n\n\nThis guide shows you how to use the `WearableRecyclerView` class to create\nlists in your Wear OS apps, how to opt-in for a curved layout\nfor your scrollable items, and how to customize the appearance of\nthe children while scrolling.\n\nAdd WearableRecyclerView to an activity using XML\n-------------------------------------------------\n\n\nThe following layout adds a `WearableRecyclerView` to an activity: \n\n```xml\n\u003candroidx.wear.widget.WearableRecyclerView\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:tools=\"http://schemas.android.com/tools\"\n android:id=\"@+id/recycler_launcher_view\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:scrollbars=\"vertical\" /\u003e\n```\n\n\nThe following example shows the `WearableRecyclerView`\napplied to an activity: \n\n### Kotlin\n\n```kotlin\nclass MainActivity : Activity() {\n\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContentView(R.layout.activity_main)\n }\n ...\n}\n```\n\n### Java\n\n```java\npublic class MainActivity extends Activity {\n @Override\n public void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_main);\n }\n ...\n}\n```\n\nCreate a curved layout\n----------------------\n\n\nTo create a curved layout for scrollable items in your wearable app, do the following:\n\n- Use [`WearableRecyclerView`](/reference/androidx/wear/widget/WearableRecyclerView) as your main container in the relevant XML layout.\n- Set the [`setEdgeItemsCenteringEnabled(boolean)`](/reference/androidx/wear/widget/WearableRecyclerView#setEdgeItemsCenteringEnabled(boolean)) method to `true`. This vertically centers the first and last items on the list on the screen.\n- Use the `WearableRecyclerView.setLayoutManager()` method to set the layout of the items on the screen.\n\n### Kotlin\n\n```kotlin\nwearableRecyclerView.apply {\n // To align the edge children (first and last) with the center of the screen.\n isEdgeItemsCenteringEnabled = true\n ...\n layoutManager = WearableLinearLayoutManager(this@MainActivity)\n}\n```\n\n### Java\n\n```java\n// To align the edge children (first and last) with the center of the screen.\nwearableRecyclerView.setEdgeItemsCenteringEnabled(true);\n...\nwearableRecyclerView.setLayoutManager(\n new WearableLinearLayoutManager(this));\n```\n\n\nIf your app has specific requirements to customize the appearance of the children while scrolling---for example,\nscaling the icons and text while the items scroll away from the center---extend\nthe [`WearableLinearLayoutManager.LayoutCallback`](/reference/androidx/wear/widget/WearableLinearLayoutManager.LayoutCallback) class and override the\n[`onLayoutFinished`](/reference/androidx/wear/widget/WearableLinearLayoutManager.LayoutCallback#onLayoutFinished(android.view.View, androidx.recyclerview.widget.RecyclerView)) method.\n\n\nThe following code snippets show an example of customizing the scrolling of items to scale\nfarther away from the center by extending the\n`WearableLinearLayoutManager.LayoutCallback` class: \n\n### Kotlin\n\n```kotlin\n/** How much icons should scale, at most. */\nprivate const val MAX_ICON_PROGRESS = 0.65f\n\nclass CustomScrollingLayoutCallback : WearableLinearLayoutManager.LayoutCallback() {\n\n private var progressToCenter: Float = 0f\n\n override fun onLayoutFinished(child: View, parent: RecyclerView) {\n child.apply {\n // Figure out % progress from top to bottom.\n val centerOffset = height.toFloat() / 2.0f / parent.height.toFloat()\n val yRelativeToCenterOffset = y / parent.height + centerOffset\n\n // Normalize for center.\n progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset)\n // Adjust to the maximum scale.\n progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS)\n\n scaleX = 1 - progressToCenter\n scaleY = 1 - progressToCenter\n }\n }\n}\n```\n\n### Java\n\n```java\npublic class CustomScrollingLayoutCallback extends WearableLinearLayoutManager.LayoutCallback {\n /** How much icons should scale, at most. */\n private static final float MAX_ICON_PROGRESS = 0.65f;\n\n private float progressToCenter;\n\n @Override\n public void onLayoutFinished(View child, RecyclerView parent) {\n\n // Figure out % progress from top to bottom.\n float centerOffset = ((float) child.getHeight() / 2.0f) / (float) parent.getHeight();\n float yRelativeToCenterOffset = (child.getY() / parent.getHeight()) + centerOffset;\n\n // Normalize for center.\n progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset);\n // Adjust to the maximum scale.\n progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS);\n\n child.setScaleX(1 - progressToCenter);\n child.setScaleY(1 - progressToCenter);\n }\n}\n``` \n\n### Kotlin\n\n```kotlin\nwearableRecyclerView.layoutManager =\n WearableLinearLayoutManager(this, CustomScrollingLayoutCallback())\n```\n\n### Java\n\n```java\nCustomScrollingLayoutCallback customScrollingLayoutCallback =\n new CustomScrollingLayoutCallback();\nwearableRecyclerView.setLayoutManager(\n new WearableLinearLayoutManager(this, customScrollingLayoutCallback));\n```"]]