我希望在视图上有一个内部弯曲的边框,即使我添加/交换/删除子项到内部/从中,它也会保持在顶部。
以下是我的尝试:
XML resource
background
FrameLayout
Fragment
与ImageView
添加到FrameLayout
ImageView
bcoz上执行此操作此Fragment
将在运行时交换,使用不同颜色的片段,并且在下滑动< / strong>黑色边框,而不是滑过它。孩子总是被父母吸引!
这就是我的期望
XML资源文件(用于内部弯曲边框)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
<shape android:shape="rectangle">
<solid android:color="#ff000000"/>
</shape>
</item>
<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
<shape android:shape="rectangle">
<solid android:color="#ffffffff"/>
<stroke android:width="3dp"
android:color="#ff000000" />
<corners android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
</item>
</layer-list>
有没有办法在没有
RelativeLayout
的情况下做到这一点我们可以有两个独立的孩子,一个用于边框,另一个用于imageView?
答案 0 :(得分:0)
就像pskink mentioned in the comment一样,您可以通过覆盖draw
中的dispatchDraw
或ViewGroup
来轻松实现这一目标。
你要做的是:
background
FrameLayout
drawable
FrameLayout
使用类似的东西:
public class RoundedBorderFrameLayout extends FrameLayout {
// ... constructors and setting up Paint and Rect objects (for drawing)
@Override
public void draw(Canvas canvas) {
super.draw(canvas); // AFTER super call!!
//... draw black rounded border on Canvas object
}
}