造型android.support.v7.preference.SeekBarPreference

问题描述:

首先,我在编程Xamarin和Android方面很新颖。我创建了一个SeekbarPreference,但是他们的一些布局不能正确显示。价值从盒子里下降(见图片)。造型android.support.v7.preference.SeekBarPreference

enter image description here

我styles.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <style name="MyTheme" parent="MyTheme.Base"> 

    </style> 

    <style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">#EC6A1E</item> 
    <item name="colorAccent">#EC6A1E</item> 
    <item name="toolbarStyle">@style/custom_toolbar</item> 
    <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material.Fix</item> 
    </style> 

    <style name="custom_toolbar" parent="@style/Widget.AppCompat.Toolbar"> 
     <item name="titleTextColor">#FFFFFF</item> 
    </style> 

    <style name="PreferenceThemeOverlay.v14.Material.Fix" parent="PreferenceThemeOverlay.v14.Material"> 
    <item name="seekBarPreferenceStyle">@style/Preference.SeekBarPreference.Fix</item> 
    </style> 

    <style name="Preference.SeekBarPreference.Fix"> 
    </style> 
</resources> 

这里是我的settings.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.preference.PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <android.support.v7.preference.SeekBarPreference 
      android:id="@+id/preference_range_seek_bar" 
      android:layout_height="wrap_content" 
      android:key="range" 
      android:title="Range" 
      android:summary="Here you can set the range of your location" 
      android:max="10000" 
      android:defaultValue="500" /> 
    <android.support.v7.preference.SeekBarPreference 
      android:key="favRange" 
      android:title="Favorite Range" 
      android:summary="Here you can set the range of your Favorite location" 
      android:max="10000" 
      android:defaultValue="500" /> 
    <android.support.v7.preference.Preference android:title="Title" android:summary="This is the summary"> 
    </android.support.v7.preference.Preference> 

</android.support.v7.preference.PreferenceScreen> 

我不明白的是我如何才能找到其中的XML属性,我可以使用在SeekBarPreference上解决这个问题。当我查看谷歌文档时,我无法在此SeekBarPreference上找到xml属性的描述。

我知道我的主题很模糊,因为我玩了很多。但是,当我有它的工作,我会调整这一点。

希望有人能帮助我,或有一个例子..

遇到同样的问题。在这里,你用一种解决方案上运行的API 25模拟器testion:

步骤1,创建一个扩展SeekBarPreference

public class CustomSeekBarPreference extends SeekBarPreference { 
    private TextView mSeekBarValueTextView; 

    public CustomSeekBarPreference(Context context, 
     AttributeSet attributeSet, 
     int i, int i1) { 
    super(context, attributeSet, i, i1); 
    } 

    public CustomSeekBarPreference(Context context, AttributeSet attributeSet, int i) { 
    super(context, attributeSet, i); 
    } 

    public CustomSeekBarPreference(Context context, AttributeSet attributeSet) { 
    super(context, attributeSet); 
    } 

    public CustomSeekBarPreference(Context context) { 
    super(context); 
    } 

    @Override 
    public void onBindViewHolder(PreferenceViewHolder preferenceViewHolder) { 
    super.onBindViewHolder(preferenceViewHolder); 
    mSeekBarValueTextView = (TextView) preferenceViewHolder.findViewById(android.support.v7.preference.R.id.seekbar_value); 
    if (mSeekBarValueTextView != null) { 
     LayoutParams layoutParams = mSeekBarValueTextView.getLayoutParams(); 
     layoutParams.height = LayoutParams.WRAP_CONTENT; 
     mSeekBarValueTextView.setLayoutParams(layoutParams); 
    } 
    } 
} 

在你的preferences.xml一类新的自定义类的名称替换SeekBarPreference类名。

<com.google.xxx.view.CustomSeekBarPreference 
     android:key="cacheLimit" 
     android:title="@string/setting_cache_limit_title" 
     android:dependency="enableCaching" 
     android:defaultValue="20" 
     android:max="40"/>