diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt
index 104e5049..e585cff8 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt
@@ -7,8 +7,6 @@ import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
-import android.view.View
-import android.widget.AdapterView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
@@ -67,15 +65,9 @@ class RoutingSettingActivity : BaseActivity() {
mItemTouchHelper = ItemTouchHelper(SimpleItemTouchHelperCallback(adapter))
mItemTouchHelper?.attachToRecyclerView(binding.recyclerView)
- val found = Utils.arrayFind(routing_domain_strategy, MmkvManager.decodeSettingsString(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY) ?: "")
- found.let { binding.spDomainStrategy.setSelection(if (it >= 0) it else 0) }
- binding.spDomainStrategy.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
- override fun onNothingSelected(parent: AdapterView<*>?) {
- }
-
- override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
- MmkvManager.encodeSettings(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY, routing_domain_strategy[position])
- }
+ binding.tvDomainStrategySummary.text = getDomainStrategy()
+ binding.layoutDomainStrategy.setOnClickListener {
+ setDomainStrategy()
}
}
@@ -98,6 +90,22 @@ class RoutingSettingActivity : BaseActivity() {
else -> super.onOptionsItemSelected(item)
}
+ private fun getDomainStrategy(): String {
+ return MmkvManager.decodeSettingsString(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY) ?: routing_domain_strategy.first()
+ }
+
+ private fun setDomainStrategy() {
+ android.app.AlertDialog.Builder(this).setItems(routing_domain_strategy.asList().toTypedArray()) { _, i ->
+ try {
+ val value = routing_domain_strategy[i]
+ MmkvManager.encodeSettings(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY, value)
+ binding.tvDomainStrategySummary.text = value
+ } catch (e: Exception) {
+ Log.e(AppConfig.TAG, "Failed to set domain strategy", e)
+ }
+ }.show()
+ }
+
private fun importPredefined() {
AlertDialog.Builder(this).setItems(preset_rulesets.asList().toTypedArray()) { _, i ->
AlertDialog.Builder(this).setMessage(R.string.routing_settings_import_rulesets_tip)
diff --git a/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml b/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml
index 6c3d7001..d79b4c84 100644
--- a/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml
@@ -18,30 +18,35 @@
android:orientation="vertical">
+ android:background="?attr/selectableItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ android:gravity="center|start"
+ android:orientation="vertical"
+ android:padding="@dimen/padding_spacing_dp16">
+ android:text="@string/routing_settings_domain_strategy"
+ android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
-
+ android:maxLines="1"
+ android:textAppearance="@style/TextAppearance.AppCompat.Small" />