2017-02-26 4 views
0

私は3列と無制限の行を持つグリッドビューを持っています。私が願っているのは:Android Drawable Round Corners Dyanamically

  • 左上隅に丸い角があります。
  • 右上角の丸い角を持つ右上のアイテムです。
  • 左下角が丸みを帯びた左下のアイテムです。
  • 右下に丸みのある右下があります。

シナリオごとに4つのxmlファイルを作成できると思っていましたが、作成する必要があることがわかりました。ただ1つしかない場合にはもう1つ作成する必要がありますグリッド内のアイテム。グリッドに1行しかない場合は2つ以上、中程度のアイテムは1つです。

この問題に対するより洗練された解決法があるかどうかは疑問です。

答えて

1

次のコードは、あなたを助ける

GradientDrawable drawable; 
makeBackground(drawable, 5, R.color.black, 2, R.color.white); 

private void makeBackground(GradientDrawable drawable, int radius, int backgroundColorResource, int borderWidth, int borderColorResource){ 
    drawable.setColor(getColor(getContext(), backgroundColorResource)); 
    drawable.setStroke(dpToPx(borderWidth), getColor(getContext(), borderColorResource)); 
    drawable.setCornerRadius(dpToPx(radius)); 
} 

public static int dpToPx(int dp) { 
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density); 
} 

public static int getColor(Context context, int res){ 
    return ContextCompat.getColor(context, res); 
} 

、異なる隅に異なる値のために、あなたはsetCornerRadiusの代わりにsetCornerRadiiを使用する必要があります。