0

私はPreferenceFragmentCompatをAndroidサポートライブラリから使用しています。私は奇妙な問題に遭遇しました。フラグメントがロードされると、私が使用しているSwitchPreference要素のスイッチがテキストの横に正しく表示されますが、これは間違った場所です。 1つのスイッチをタップするかスクロールしてスイッチが見えない場合は、それ自体が修正されます。注:これは負荷にAPI 18タップするまでSwitchPreferenceのレイアウトが正しくない

API 25に発生しますが、ない:

Switches in incorrect position

タップした後

またはスクロール:

Switches in correct position

何が起こっている上の任意の考えを持っていますに?どんな助けもありがとう!ここで

は、私がやっていることです:

  1. が変更された(そして最終的に削除)SwitchPreferenceCompat
  2. に切り替えのstyles.xml
  3. のカスタムテーマは「doesnのスイッチの小さなセットを作成しt画面を埋める。興味深いのは、画面が環境設定で満たされていないと、レイアウトがすばらしく見えるということです。 (スクロールはそれを修正しないようにそれが働くだろう期待して)再描画を強制するフラグメントのビューにinvalidate()呼び出さ
  4. (動作しませんでした全幅することを強制するためにテキストにスペースの束を追加しました......実際に期間の束のようなテキストしかし笑作品を行います)

コード()Kotlinにプリファレンスを作成するには:

class PreferencesFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener { 

    override fun onCreatePreferences(bundle: Bundle?, s: String?) { 
     val deviceCategory = PreferenceCategory(activity) 
     deviceCategory.title = activity.getString(R.string.preferences_Device_Defaults) 
     preferenceScreen.addPreference(deviceCategory) 

     val clockPref = SwitchPreference(activity) 
     clockPref.title = activity.getString(R.string.preferences_Automatic_clock_synchronization) 
     clockPref.isChecked = true 
     clockPref.key = "clockSync" 
     deviceCategory.addPreference(clockPref) 

     // Add more preferences.... 

     val unitCategory = PreferenceCategory(activity) 
     unitCategory.title = activity.getString(R.string.preferences_Unit_Defaults) 
     preferenceScreen.addPreference(unitCategory) 

     val runCellTestOnConnect = SwitchPreference(activity) 
     runCellTestOnConnect.title = activity.getString(R.string.preferences_Cell_network_check) 
     runCellTestOnConnect.isChecked = true 
     runCellTestOnConnect.key = "runCellTestOnConnect" 
     unitCategory(runCellTestOnConnect) 

     // Add more preferences.... 
    } 
} 

答えて

0

開発するとき、私はまったく同じ問題に会いましたコトリンで現在私は一時的な回避策を持っています:他のすべての設定の前に空の設定を作成し、その要約に長い目に見えない文字列を埋めます。

例えば、私は好みを構築するためにXMLファイルを使用していますことを前提としています

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <Preference 
     android:key="pref_static_field_key" 
     android:persistent="false" 
     android:selectable="false" 
     android:summary="@string/spaces" /> 
    <!-- Other Preferences --> 
</PreferenceScreen> 

その後、次のSwitchPreference要素の幅は、この空の好みの幅によって決定されていることがわかります。 "@文字列/スペース"が十分に長い場合(たとえば、複数行または少なくとも画面全体の長さの場合)、正しい幅が得られます。

関連する問題