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" />