我开始使用这个库:https://github.com/MrBIMC/MaterialSeekBarPreference。当我使用它时,我发现滑块很小。我发现它使用msbp_seekbar_width
属性:
<SeekBar
android:id="@+id/seekbar"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_width="@dimen/msbp_seekbar_width"
android:layout_height="wrap_content" />
所以我试着在我的应用中覆盖它。我有nexus 5x,它应该是xxhdpi和730 dpi宽:https://design.google.com/devices/。我把
<dimen name="msbp_seekbar_width">700dp</dimen>
以下限定符目录中的dimens.xml
中的值:values
,w720dpi
,xxhdpi
。但它没有效果。是否可以从库中覆盖资源?
答案 0 :(得分:1)
因为lib不依赖于你的项目 ..尝试将已使用的类从该lib(如果可能)扩展到你的项目并再次重用..这将允许你使用资源来自Lib和您项目中的资源。 所以SeekBar会像
一样<com.mycompany.myapp.widget.SeekBar
..
android:id="@+id/seekbar"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_width="@dimen/msbp_seekbar_width"
android:layout_height="wrap_content" />
<强>扩展中心:强> 如果这不起作用..您可以将布局:R.layout.seekbar_view_layout复制到您的项目中,并确保覆盖其使用的方法:
我不知道你要瞄准哪一个..所以我列出所有:
对于SeekBarPreferenceView.java:
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
View view = inflate(getContext(), R.layout.seekbar_view_layout, this);
controllerDelegate.onBind(view);
}
对于SeekBarPreference.java:
private void init(AttributeSet attrs) {
setLayoutResource(R.layout.seekbar_view_layout);
controllerDelegate = new PreferenceControllerDelegate(getContext(), false);
controllerDelegate.setViewStateListener(this);
controllerDelegate.setPersistValueListener(this);
controllerDelegate.setChangeValueListener(this);
controllerDelegate.loadValuesFromXml(attrs);
}
对于SeekBarPreferenceCompat.java:
private void init(AttributeSet attrs) {
setLayoutResource(R.layout.seekbar_view_layout);
controllerDelegate = new PreferenceControllerDelegate(getContext(), false);
controllerDelegate.setViewStateListener(this);
controllerDelegate.setPersistValueListener(this);
controllerDelegate.setChangeValueListener(this);
controllerDelegate.loadValuesFromXml(attrs);
}