背景が白いAndroidスクロールビューがあります。フェード エッジは、白い半透明のグラデーションです。白ではなく黒に変更したいです。同じプロジェクトに、デフォルトで黒くフェードするエッジを持つ白い背景を持つ ListView がありますが、どこに設定されているか (もしあれば) を見つけることができません。
7 に答える
背景とは異なる色のフェード エッジが必要な場合は、ScrollView の getSolidColor() メソッドをオーバーライドする必要があります。例えば:
@Override
public int getSolidColor() {
return Color.rgb(0x30, 0x30, 0x30);
}
試行錯誤で見つけました。
android:background="@color/yourColor"
に設定するだけ<ScrollView>
です。シャドウを指定された色に設定します。
以下を使用できます。
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 つのことに投入する前に、その属性を十分に確認してください。