我正在编辑以使问题更简单,希望这有助于获得准确的答案.
说我有以下oval形状:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:angle="270"
android:color="#FFFF0000"/>
<stroke android:width="3dp"
android:color="#FFAA0055"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
如何在活动类中以编程方式设置颜色?
我有
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#FFFF00" />
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
</shape>
<TextView
android:background="@drawable/test"
android:layout_height="45dp"
android:layout_width="100dp"
android:text="Moderate"
/>
Run Code Online (Sandbox Code Playgroud)
所以现在我希望这个形状根据我从Web服务调用中获取的信息来改变颜色.所以它可能是黄色或绿色或红色或其他任何取决于我从网络电话呼叫收到的颜色.
如何更改形状的颜色?根据这些信息?
我目前正在尝试将以下XML转换为以编程方式创建,以便我可以根据需要在整个项目中设置顶角和底角.它是一个简单的图层列表,有两个矩形; 一个在另一个之上.我想用它作为几个不同视图的背景,因此结果可以扩展.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:bottom="20dp">
<shape android:shape="rectangle" >
<size android:height="20dp" />
<solid android:color="#969595" />
<corners
android:radius = "0dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
</item>
<item android:top="20dp">
<shape android:shape="rectangle" >
<size android:height="20dp" />
<solid android:color="#7B7979" />
<corners
android:radius = "0dp"
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
这种方法确实有效,但我需要为每个形状分别使用一个XML,具体取决于我是想要顶部,底部,两者还是没有圆角.
我目前尝试创建相同的drawable只产生了两个矩形,一个在另一个上面.我无法弄清楚如何设置矩形的位置.无论形状的界限是什么,我都看不到明显的变化.任何建议将不胜感激.
// Usage:
setBackgroundDrawable(new DualColorStateDrawable(0, 10f));
Run Code Online (Sandbox Code Playgroud)
...
private final int topColorUnselected = Color.RED;
private final int bottomColorUnselected = Color.GREEN;
private final int topColorSelected = Color.YELLOW;
private final int bottomColorSelected = Color.BLUE;
private final …Run Code Online (Sandbox Code Playgroud) 我已经就这个问题做了一些研究,但我还没有找到类似的东西.
首先我使用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)