diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt index aa82941393..052cebe664 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt @@ -159,7 +159,7 @@ fun AppPickerScreen( IconButton(onClick = { showMenu = true }) { Icon( painterResource(R.drawable.ic_more_vert_24dp), - contentDescription = null + contentDescription = stringResource(R.string.acc_more) ) } DropdownMenu( diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/AccessibilityModifiers.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/AccessibilityModifiers.kt new file mode 100644 index 0000000000..2d0c4d96f0 --- /dev/null +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/AccessibilityModifiers.kt @@ -0,0 +1,9 @@ +package com.v2ray.ang.ui.compose + +import androidx.compose.ui.Modifier +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.traversalIndex + +internal fun Modifier.accessibilityTraversalIndex(index: Float): Modifier = semantics { + traversalIndex = index +} diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt index 86027f1c57..2b5204ffef 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/compose/Components.kt @@ -85,7 +85,10 @@ fun AppTopBar( placeholder = searchPlaceholder ) } else { - Text(text = title) + Text( + text = title, + modifier = Modifier.accessibilityTraversalIndex(-1f) + ) } }, navigationIcon = { @@ -151,7 +154,10 @@ private fun SearchInputField( ) if (query.isNotEmpty()) { IconButton(onClick = { onQueryChange("") }) { - Icon(painterResource(android.R.drawable.ic_menu_close_clear_cancel), "Clear") + Icon( + painter = painterResource(android.R.drawable.ic_menu_close_clear_cancel), + contentDescription = stringResource(R.string.acc_clear_search) + ) } } } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt index f7c16ea76a..bfc4ead66e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainBottomBar.kt @@ -21,6 +21,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment +import androidx.compose.ui.semantics.onClick import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource @@ -42,6 +43,7 @@ fun MainBottomBar( onAction: (MainAction) -> Unit ) { Box(modifier = Modifier.fillMaxWidth()) { + val serviceActionLabel = stringResource(if (isRunning) R.string.acc_disconnect else R.string.acc_connect) Column( modifier = Modifier .fillMaxWidth() @@ -73,7 +75,8 @@ fun MainBottomBar( .align(Alignment.TopEnd) .padding(end = 24.dp) .offset(y = (-28).dp) - .navigationBarsPadding(), + .navigationBarsPadding() + .semantics { onClick(label = serviceActionLabel, action = null) }, containerColor = if (isRunning) colorFabActive else if (isDarkTheme) colorFabInactiveDark else colorFabInactiveLight diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt index 1bd2fadc6b..e8a371ca40 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainDrawer.kt @@ -28,6 +28,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.hideFromAccessibility +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.v2ray.ang.R import com.v2ray.ang.ui.compose.AppDivider @@ -81,6 +83,8 @@ fun MainDrawerContent(drawerState: DrawerState, onNavigate: (MainDestination) -> modifier = Modifier .fillMaxWidth() .height(180.dp) + // The decorative Surface must not become an empty accessibility stop. + .semantics { hideFromAccessibility() } ) { Column( modifier = Modifier @@ -102,6 +106,7 @@ fun MainDrawerContent(drawerState: DrawerState, onNavigate: (MainDestination) -> ) Text( text = stringResource(R.string.app_name), + modifier = Modifier.semantics { hideFromAccessibility() }, style = MaterialTheme.typography.titleLarge, color = MaterialTheme.colorScheme.onSurface ) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt index cc3b4f8467..aba1ea4bc9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainTopBar.kt @@ -22,6 +22,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.onClick +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import com.v2ray.ang.R import com.v2ray.ang.ui.compose.AppTopBar @@ -62,8 +64,12 @@ fun MainTopBar( Icon(painterResource(R.drawable.ic_arrow_back_24dp), contentDescription = stringResource(R.string.acc_back)) } } else { - IconButton(onClick = onMenuClick) { - Icon(painterResource(R.drawable.ic_menu_24dp), contentDescription = stringResource(R.string.acc_open_menu)) + val menuLabel = stringResource(R.string.acc_open_menu) + IconButton( + onClick = onMenuClick, + modifier = Modifier.semantics { onClick(label = menuLabel, action = null) }, + ) { + Icon(painterResource(R.drawable.ic_menu_24dp), contentDescription = menuLabel) } } }, diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml index 378b71ae35..4c3369d4a8 100644 --- a/V2rayNG/app/src/main/res/values-ar/strings.xml +++ b/V2rayNG/app/src/main/res/values-ar/strings.xml @@ -512,13 +512,16 @@ إضافة مصدر موارد تنزيل ملفات الموارد رمز QR - نسخ السجل + نسخ السجل إلى الحافظة مسح السجل إضافة قاعدة توجيه بدء الخدمة إيقاف الخدمة + اتصال + قطع الاتصال رجوع بحث + مسح البحث إضافة تكوين المزيد من الخيارات Selected diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml index 78effa02ea..4c6a7d8b49 100644 --- a/V2rayNG/app/src/main/res/values-bn/strings.xml +++ b/V2rayNG/app/src/main/res/values-bn/strings.xml @@ -512,13 +512,16 @@ অ্যাসেট উৎস যোগ করুন অ্যাসেট ফাইল ডাউনলোড করুন QR কোড - লগ কপি করুন + ক্লিপবোর্ডে লগ কপি করুন লগ মুছুন রাউটিং নিয়ম যোগ করুন সার্ভিস শুরু করুন সার্ভিস বন্ধ করুন + সংযোগ করুন + সংযোগ বিচ্ছিন্ন করুন ফিরে যান অনুসন্ধান করুন + অনুসন্ধান মুছুন কনফিগারেশন যোগ করুন আরও বিকল্প Selected diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml index f85a9418ff..956726cc30 100644 --- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml +++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml @@ -512,13 +512,16 @@ ٱووردن بونچک فایلا جغرافیایی دانلود فایلا بونچک جغرافیایی کود QR - لف گیری گوزارش + لف گیری گوزارش من ویرگا روفتن گوزارش ٱووردن قانووݩ ره وستن سرویس واڌاشتن سرویس + منپیز کردن + واڌاشتن منپیز برگشت پیتینیڌن + روفتن پیتینیڌن ٱووردن کانفیگ امکووݩا بؽتر Selected diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index 116846f34c..c2b4a68908 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -512,13 +512,16 @@ افزودن منبع فایل‌های جغرافیایی دانلود فایل‌های منبع کد QR - کپی گزارش + کپی گزارش در کلیپ‌بورد پاک کردن گزارش افزودن قانون مسیریابی شروع سرویس توقف سرویس + اتصال + قطع اتصال بازگشت جستجو + پاک کردن جستجو افزودن کانفیگ گزینه‌های بیشتر انتخاب شده diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index ee93da422d..8bbaa42161 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -512,13 +512,16 @@ Добавить источник ресурсов Загрузить файлы ресурсов QR-код - Копировать журнал + Копировать журнал в буфер обмена Очистить журнал Добавить правило маршрутизации Запустить службу Остановить службу + Подключиться + Отключиться Назад Поиск + Очистить поиск Добавить профиль Дополнительные параметры Selected diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index 4e912e424c..5d27d63957 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -512,13 +512,16 @@ Thêm nguồn tệp tài nguyên Tải xuống tệp tài nguyên Mã QR - Sao chép nhật ký + Sao chép nhật ký vào bộ nhớ tạm Xóa nhật ký Thêm quy tắc định tuyến Khởi động dịch vụ Dừng dịch vụ + Kết nối + Ngắt kết nối Quay lại Tìm kiếm + Xóa tìm kiếm Thêm cấu hình Tùy chọn khác Selected diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 0ceb0b8820..d8ea08b27b 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -512,13 +512,16 @@ 添加资源来源 下载资源文件 二维码 - 复制日志 + 将日志复制到剪贴板 清除日志 添加路由规则 启动服务 停止服务 + 连接 + 断开连接 返回 搜索 + 清除搜索 添加配置 更多选项 Selected diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index cb7bae5511..e6f6ccea9e 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -512,13 +512,16 @@ 新增資源來源 下載資源檔案 QR Code - 複製日誌 + 將日誌複製到剪貼簿 清除日誌 新增路由規則 啟動服務 停止服務 + 連線 + 中斷連線 返回 搜尋 + 清除搜尋 新增設定 更多選項 Selected diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index b96ce5f2e6..bc3e1d6630 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -512,13 +512,16 @@ Add asset source Download asset files QR code - Copy log + Copy log to clipboard Clear log Add routing rule Start service Stop service + Connect + Disconnect Back Search + Clear search Add configuration More options Selected