2017-06-22 77 views
1

首先,我在編程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屬性的描述。

我知道我的主題很模糊,因爲我玩了很多。但是,當我有它的工作,我會調整這一點。

希望有人能幫助我,或有一個例子..

回答

0

遇到同樣的問題。在這裏,你用一種解決方案上運行的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"/> 
相關問題