Bugfix for DropDownPreference
This commit is contained in:
@@ -50,17 +50,17 @@ import android.content.res.AssetManager
|
||||
import android.graphics.{Bitmap, Color, Typeface}
|
||||
import android.net.{Uri, VpnService}
|
||||
import android.os._
|
||||
import android.preference._
|
||||
import android.preference.{PreferenceManager, SwitchPreference, Preference}
|
||||
import android.support.design.widget.{FloatingActionButton, Snackbar}
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import android.support.v7.widget.Toolbar
|
||||
import android.util.{DisplayMetrics, Log}
|
||||
import android.view._
|
||||
import android.view.{View, ViewGroup, ViewParent}
|
||||
import android.webkit.{WebView, WebViewClient}
|
||||
import android.widget._
|
||||
import com.github.shadowsocks.aidl.{IShadowsocksService, IShadowsocksServiceCallback}
|
||||
import com.github.shadowsocks.database._
|
||||
import com.github.shadowsocks.preferences.{PasswordEditTextPreference, ProfileEditTextPreference, SummaryEditTextPreference}
|
||||
import com.github.shadowsocks.preferences.{DropDownPreference, PasswordEditTextPreference, ProfileEditTextPreference, SummaryEditTextPreference}
|
||||
import com.github.shadowsocks.utils._
|
||||
import com.google.android.gms.ads.{AdRequest, AdSize, AdView}
|
||||
import com.google.android.gms.analytics.HitBuilders
|
||||
@@ -132,8 +132,8 @@ object Shadowsocks {
|
||||
val EXECUTABLES = Array(Executable.PDNSD, Executable.REDSOCKS, Executable.SS_TUNNEL, Executable.SS_LOCAL, Executable.TUN2SOCKS)
|
||||
|
||||
// Helper functions
|
||||
def updateListPreference(pref: Preference, value: String) {
|
||||
pref.asInstanceOf[ListPreference].setValue(value)
|
||||
def updateDropDownPreference(pref: Preference, value: String) {
|
||||
pref.asInstanceOf[DropDownPreference].setValue(value)
|
||||
}
|
||||
|
||||
def updatePasswordEditTextPreference(pref: Preference, value: String) {
|
||||
@@ -162,8 +162,8 @@ object Shadowsocks {
|
||||
case Key.remotePort => updateSummaryEditTextPreference(pref, profile.remotePort.toString)
|
||||
case Key.localPort => updateSummaryEditTextPreference(pref, profile.localPort.toString)
|
||||
case Key.sitekey => updatePasswordEditTextPreference(pref, profile.password)
|
||||
case Key.encMethod => updateListPreference(pref, profile.method)
|
||||
case Key.route => updateListPreference(pref, profile.route)
|
||||
case Key.encMethod => updateDropDownPreference(pref, profile.method)
|
||||
case Key.route => updateDropDownPreference(pref, profile.route)
|
||||
case Key.isGlobalProxy => updateSwitchPreference(pref, profile.global)
|
||||
case Key.isUdpDns => updateSwitchPreference(pref, profile.udpdns)
|
||||
case Key.isAuth => updateSwitchPreference(pref, profile.auth)
|
||||
|
||||
@@ -12,7 +12,6 @@ import android.view.{View, ViewGroup}
|
||||
import android.widget.AdapterView.OnItemSelectedListener
|
||||
import android.widget.{AdapterView, ArrayAdapter}
|
||||
import com.github.shadowsocks.R
|
||||
import com.github.shadowsocks.utils.Utils
|
||||
|
||||
/**
|
||||
* Based on: https://github.com/Mygod/mygod-lib-android/blob/683c41cb86d10e99ab0f457d41a218c6915fccc8/lib/src/main/scala/tk/mygod/preference/DropDownPreference.scala
|
||||
@@ -35,7 +34,8 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
|
||||
override def onItemSelected(parent: AdapterView[_], view: View, position: Int, id: Long) = setValueIndex(position)
|
||||
})
|
||||
setOnPreferenceClickListener((preference: Preference) => {
|
||||
mSpinner.setDropDownVerticalOffset(Utils.dpToPx(getContext, 8 - 48 * mSelectedIndex).toInt) // TODO: scrolling?
|
||||
// TODO: not working with scrolling
|
||||
// mSpinner.setDropDownVerticalOffset(Utils.dpToPx(getContext, -48 * mSelectedIndex).toInt)
|
||||
mSpinner.performClick
|
||||
true
|
||||
})
|
||||
@@ -169,8 +169,9 @@ final class DropDownPreference(private val mContext: Context, attrs: AttributeSe
|
||||
|
||||
protected override def onBindView(@NonNull view: View) {
|
||||
super.onBindView(view)
|
||||
if (view == mSpinner.getParent) return
|
||||
if (mSpinner.getParent != null) mSpinner.getParent.asInstanceOf[ViewGroup].removeView(mSpinner)
|
||||
val parent = mSpinner.getParent.asInstanceOf[ViewGroup]
|
||||
if (view eq parent) return
|
||||
if (parent != null) parent.removeView(mSpinner)
|
||||
view.asInstanceOf[ViewGroup].addView(mSpinner, 0)
|
||||
val lp = mSpinner.getLayoutParams
|
||||
lp.width = 0
|
||||
|
||||
Reference in New Issue
Block a user