Android Scrollview Fading Edgeの色を設定するにはどうすればよいですか?
-
27-09-2019 - |
質問
白い背景を持つAndroid Scrollviewがあります。フェードエッジは、白い半透明の勾配です。白ではなく黒に変えたいと思います。デフォルトで黒いフェードエッジを持つ白い背景を持つ同じプロジェクトにリストビューがありますが、設定された場所(どこでも)が見つかりません。
解決
試行錯誤によってそれを見つけたばかりです。
単に設定します android:background="@color/yourColor"
のために <ScrollView>
. 。それは与えられた色に影を設定します。
他のヒント
背景とは異なる色のフェードエッジが必要な場合は、ScrollViewのGetSolidColor()メソッドをオーバーライドする必要があります。例えば:
@Override
public int getSolidColor() {
return Color.rgb(0x30, 0x30, 0x30);
}
使用できます:
final int glowDrawableId = context.getResources().getIdentifier("overscroll_glow",
"drawable", "android");
final Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
int edgeDrawableId = context.getResources().getIdentifier("overscroll_edge", "drawable",
"android");
final Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId);
androidEdge.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
編集: :これは質問に答えません、それは求めていました ScrollView
. 。この答えは機能するだけです AbsListView
および子孫(を含む ListView
).
フェードエッジの色は、によって制御されます android:cacheColorHint
属性。
例えば:
<ScrollView android:cacheColorHint="#ff000000" android:background="#ffffffff" />
背景を白に設定します cacheColorHint
フェードエッジの色を描くために使用されます - この場合、それは黒です。
フェードエッジの色が何が変わったのかわからない場合は、おそらくスタイルやテーマの適用でした。マニフェストを確認してください android:theme="something"
アクティビティで。テーマがグループからのものである場合 android.R.style.Theme.Light
エッジは白になります。デフォルト android.R.style.Theme
と android.R.style.Theme.Black
黒いフェードエッジがあります。テーマは他の属性にも影響を与えるので、属性を完全にチェックしてから、1つのことを投入してください。
これを行う:
<ScrollView
android:theme="@style/scrollUpdate"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
値でスタイルはスタイルを置きます
<style name="scrollUpdate">
<item name="colorAccent">@color/yourcolor</item>
<item name="android:color">@color/yourcolor</item>
<item name="colorPrimary">@color/yourcolor</item>
<item name="colorPrimaryDark">@color/yourcolor</item>
</style>
私にはtksに動作します!