我想创建自己的自定义视图。不寻常的是它应该在x - view.getWidth()绘制。我怎么能这样做?
提前致谢!
的Gratzi
答案 0 :(得分:0)
您可以使用android:paddingLeft
和android:paddingTop
将某个像素值添加到该布局,以便根据需要进行定位。
答案 1 :(得分:0)
要说出你想做什么有点难。如果您想要定位视图,请阅读layouts(特别是RelativeLayout,这样您就可以使用不同的gravities非常自由地放置子视图。
答案 2 :(得分:0)
您应该覆盖onLayout()
。例如,我认为这可能有用,但我没有测试过它:
@Override
public void onLayout(boolean changed, int l, int t, int r, int b) {
l = l - this.getWidth();
this.layout(l, t, r, b);
super.onLayout(changed, l, t, r, b);
}
第二次尝试:
@Override
public void onLayout(boolean changed, int l, int t, int r, int b) {
if(changed) {
int newLeft = 2*l - r;
this.layout(newLeft, t, r, b);
}
super.onLayout(false, l, t, r, b);
}
但基本上,在onLayout()
内您可以检索视图的尺寸。
答案 3 :(得分:0)
覆盖onLayout
方法,并使用setRight
和setLeft
方法设置新的左右边缘。这样,您将视图移动到左侧。
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
if(changed) {
int amount = getWidth();
right -= amount;
left -= amount;
setRight(right);
setLeft(left);
}
}
答案 4 :(得分:0)
我认为您应该选择覆盖onSizeChanged,它会为您提供自定义视图的宽度和高度:
@Override
public void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
myCustomOffset = offsetVar - w;
}