我目前正在尝试转换下面的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>
这种方法确实有效,但是我需要为每个形状准备一个单独的XML,这取决于我是想要顶部、底部、两个都是,还是不要圆角。
我目前尝试创建相同的可绘制对象时,只产生了两个矩形,其中一个在另一个之上。我不知道如何设置矩形的位置。无论形状的边界设置到什么,我都看不到任何可见的变化。任何建议将不胜感激。
// Usage:
setBackgroundDrawable(new DualColorStateDrawable(0, 10f));
...
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 int m_nZERO_RADIUS = 0;
class DualColorStateDrawable extends StateListDrawable
{
public NYWTableViewCellStateDrawable(float topRadius, float bottomRadius){
addState(new int[] { -android.R.attr.state_pressed },
createListWithSelectedState(false, topRadius, bottomRadius));
addState(new int[] { android.R.attr.state_pressed },
createListWithSelectedState(true, topRadius, bottomRadius));
}
public Drawable createListWithSelectedState(
boolean isSelected, float topRadius, float bottomRadius){
int topColor, bottomColor;
if (isSelected) {
topColor = topColorSelected;
bottomColor = bottomColorSelected;
} else {
topColor = topColorUnselected;
bottomColor = bottomColorUnselected;
}
int x = 10;
int y = 10;
int width = 20;
int height = 20;
RoundRectShape _rrsTopShape =
new RoundRectShape(getRadii(topRadius, m_nZERO_RADIUS), null, null);
CustomShapeDrawable _csdTopShape =
new CustomShapeDrawable(_rrsTopShape, topColor);
RoundRectShape _rrsBottomShape =
new RoundRectShape(getRadii(m_nZERO_RADIUS, bottomRadius), null, null);
CustomShapeDrawable _csdBottomShape =
new CustomShapeDrawable(_rrsBottomShape, bottomColor);
_csdBottomShape.setBounds(x, y, x + width, y + height);
return new LayerDrawable(new Drawable[] {_csdTopShape, _csdBottomShape});
}
private float[] getRadii(float top, float bottom)
{
return new float[] { top, top, //
top, top, //
bottom, bottom, //
bottom, bottom //
};
}
class CustomShapeDrawable extends ShapeDrawable {
private final Paint fillpaint;
public CustomShapeDrawable(Shape s, int fill) {
super(s);
fillpaint = new Paint(this.getPaint());
fillpaint.setColor(fill);
}
@Override
protected void onDraw(Shape shape, Canvas canvas, Paint paint) {
shape.draw(canvas, fillpaint);
}
}
}
您正在寻找< code>LayerDrawable的setLayerInset,以便能够将一个矩形设置在另一个之上。
见下文:
float radius = 5.0f;
float[] m_arrfTopHalfOuterRadii =
new float[] {radius, radius, radius, radius, 0, 0, 0, 0};
float[] m_arrfBottomHalfOuterRadii =
new float[] {0, 0, 0, 0, radius, radius, radius, radius};
int m_nTopColor = Color.BLUE;
int m_nBottomColor = Color.CYAN;
int m_nCellHeight = 40;
public Drawable drawbg()
{
RoundRectShape top_round_rect =
new RoundRectShape(m_arrfTopHalfOuterRadii, null, null);
ShapeDrawable top_shape_drawable = new ShapeDrawable(top_round_rect);
top_shape_drawable.getPaint().setColor(m_nTopColor);
RoundRectShape bottom_round_rect =
new RoundRectShape(m_arrfBottomHalfOuterRadii, null, null);
ShapeDrawable bottom_shape_drawable = new ShapeDrawable(bottom_round_rect);
bottom_shape_drawable.getPaint().setColor(m_nBottomColor);
Drawable[] drawarray = {top_shape_drawable, bottom_shape_drawable};
LayerDrawable layerdrawable = new LayerDrawable(drawarray);
int _nHalfOfCellHeight = m_nCellHeight/2;
layerdrawable.setLayerInset(0, 0, 0, 0, _nHalfOfCellHeight); //top half
layerdrawable.setLayerInset(1, 0, _nHalfOfCellHeight, 0, 0); //bottom half
return layerdrawable;
}
问题内容: 我一直在尝试以编程方式重做我的应用程序上的工作。(不使用情节提要) 除了手动制作导航控制器外,我几乎完成了。 我一直在做一些研究,但找不到任何手动实现此方法的文档。(我开始将应用程序制作为单视图应用程序) 目前,我只有1个ViewController。当然是appDelegate 导航控制器将在应用程序的所有页面中使用。 如果有人可以帮助我,或发送指向一些适当文档的链接以编程方式进行此
我试图在android中创建一个具有圆形边缘的视图。到目前为止,我找到的解决方案是定义一个具有圆角的形状,并将其用作该视图的背景。 下面是我所做的,定义一个可绘制的,如下所示: 现在我用它作为我的布局背景,如下所示: 这工作非常好,我可以看到视图有圆形的边缘。 但是我的布局中有许多其他的子视图,比如ImageView或MapView。当我在上面的布局中放置时,图像的角落不会被裁剪/裁剪,而是显示为
问题内容: 我正在尝试以编程方式创建UIImage视图,我有一个新视图,并且尝试这样做 这行不通,因为我不知道 您 在第二行中应该看到的是什么。 问题: 如何通过编码而不是在情节提要中使UIImageView出现在屏幕上 问题答案: 首先,您从图片文件中创建一个,然后从中创建一个: 最后,您需要给出一个框架并将其添加到视图中以使其可见:
问题内容: 我知道我可以使用Java中的 api 以编程方式创建文件,如下所示: 但是是否有任何 API 可以构建树?(例如Dom之类的api) 我需要这样的东西: 和: 提前致谢。 问题答案: 由于XSLT也是XML,因此您可以简单地使用相同的策略: 等等… 但这不是很优雅。您应该改用库或框架,但应该很容易找到一个谷歌浏览器。
我有一个WS,它返回非常基本的产品数据:代码、价格和图像。我需要用这些基本数据以编程方式创建Hybris产品,然后进行同步,以便在店面上看到这些产品。 创建具有这些基本信息的产品的步骤是什么?有OOTB服务吗?
我正尝试使用以下命令以编程方式创建: