2016-08-20 4 views
0

私はこのライブラリを使用し始めました: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" /> 

だから私は私のアプリでそれを上書きしようとしました。私はxxhdpiと730 dpiの幅を持つネクサス5xを持っています:https://design.google.com/devices/valuesw720dpixxhdpi:私は修飾子ディレクトリを以下にdimens.xml

<dimen name="msbp_seekbar_width">700dp</dimen> 

値を置きます。しかしそれは効果がなかった。ライブラリからリソースをオーバーライドすることは可能ですか?

答えて

1

libはプロジェクトに依存しません ..使用されているクラスをプロジェクトに再利用してください。あなたのプロジェクトのリソース。 ので、シークバーが

<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、あなたがそのメソッドをオーバーライドしていることを確認してください:そのdoesntの仕事が..あなたがレイアウトをコピーすることができる場合 使用:

私は..あなたがターゲットとしている1知らないので、私はそれらをすべてリスト:SeekBarPreferenceView.javaについては

@Override 
    protected void onAttachedToWindow() { 
     super.onAttachedToWindow(); 
     View view = inflate(getContext(), R.layout.seekbar_view_layout, this); 
     controllerDelegate.onBind(view); 
    } 
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); 
    } 

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); 
    } 
+0

は、あなたが、私は、新しいクラスを作成し、それはライブラリのクラスから派生させて、新しいクラスを使用しなければならないことを意味していますし、それが突然起動しSeekBarPreference.javaについては

働く? –

+0

はい。私はそれがうまくいくと思います。 –

+0

いいえ、それは同じです。私は私のオーバーライドされた選好の1つの発生と2つのオリジナルを持っており、それらはすべて同じに見える。 –

関連する問題