LinearLayout使用不带XML的java代码动态设置边框颜色

Rah*_*ini 2 android android-layout

我已经就这个问题做了一些研究,但我还没有找到类似的东西.

首先我使用ShapeDrawable创建线性布局的边框然后我尝试在LinearLayout上设置背景颜色但是没有设置颜色然后我已经设置了ShapeDrawable的两行然后我设置了线性布局的背景颜色但问题出现在边框颜色.

这是我通过背景颜色和边框颜色的JSON获得的价值.

我想通过java代码动态设置该值的线性布局的背景颜色和边框颜色.

请指导我.

谢谢

LinearLayout linearToAdd = new LinearLayout(getActivity());
linearToAdd.setOrientation(VERTICAL);
float d = getActivity().getResources().getDisplayMetrics().density;

  linearToAdd.setBackgroundColor(Color.parseColor((String)(mPod.getBackground())));

    switch(parentType){
    case LINEAR_LAYOUT:
        LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams((int)(mPod.getWidth()*d),(int)(mPod.getHeight()*d));
        Log.d(TAG,"LinLay, W,H,T,L: "+mPod.getWidth()+", "+mPod.getHeight()+", "+mPod.getLeft()+", "+mPod.getTop());
        linearParams.setMargins(mPod.getLeft(), mPod.getTop(), 0,0);            
        linearToAdd.setLayoutParams(linearParams);

               ShapeDrawable rectShapeDrawable1 = new ShapeDrawable();
               Paint paint1 = rectShapeDrawable1.getPaint();
        //     paint1.setColor(Color.rgb(0, 0, 0));
               paint1.setStyle(Paint.Style.STROKE);
               paint1.setStrokeWidth(3);

        //     linearToAdd.setBackgroundDrawable(rectShapeDrawable1);

               break;
    } 
Run Code Online (Sandbox Code Playgroud)

rah*_*hah 10

您可以尝试通过GradientDrawable执行此操作.我试过这个.希望它可以帮到你.

GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);
drawable.setStroke(3, Color.BLACK);
drawable.setCornerRadius(8);
drawable.setColor(Color.BLUE);
linearToAdd.setBackgroundDrawable(drawable);
Run Code Online (Sandbox Code Playgroud)

在你的XML布局中,将android:padding ="1dp"赋予linearToAdd.