Android 布局功能没有';不要更改视图尺寸。

Android 布局功能没有';不要更改视图尺寸。,android,android-layout,Android,Android Layout,我试图创建一个从屏幕底部向上滑动的视图。我尝试用xml设置视图的初始位置(应该是屏幕外的),但是没有将imageview放在我指定的位置,而是截断了它。我的第二个想法是在onWindowFocusChanged方法中以编程方式设置视图的位置。这是我的密码 @Override public void onWindowFocusChanged(boolean hasFocus) { if(hasFocus) { slide_dock.layout(slide_dock.get

我试图创建一个从屏幕底部向上滑动的视图。我尝试用xml设置视图的初始位置(应该是屏幕外的),但是没有将imageview放在我指定的位置,而是截断了它。我的第二个想法是在onWindowFocusChanged方法中以编程方式设置视图的位置。这是我的密码

    @Override
public void onWindowFocusChanged(boolean hasFocus) {
    if(hasFocus) {
    slide_dock.layout(slide_dock.getLeft(), phone_height - 70, slide_dock.getRight(), phone_height + 230);
    }
}

问题是,这只在某些时候起作用。我一直在调试它,我相信问题在于,在onWindowFocusChanged函数完成后,slide_dock的布局值会发生更改,我只是不确定在哪里。这里有人能帮我吗?或者将我链接到某个可以深入解释布局过程的地方?我一直在四处寻找,但毫无结果

您是否尝试过使用动画框架?使用RelativeLayout并将子视图与父视图的底部对齐。然后使用以下动画,可能使用
view.setVisibility(int)


您可能需要使用TranslateImation构造函数参数才能使其正常工作(这是我的想法)。

因此,我找到了上述问题的原因,并将其发布在这里,以防任何人遇到相同的问题

ImageView调整大小的原因是,在ImageView的onMeasure函数中,如果它认为自己不适合屏幕,它会调整自身大小。您可以在此处查看ImageView源,并了解其工作原理:

为了解决这个问题,我创建了一个自定义视图,它扩展了ImageView并覆盖了onMeasure方法。在我新的onMeasure方法中,我只是调用setDimension来为我的新视图提供我想要的维度,这有效地阻止了视图像之前那样调整大小

    @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(measureWidth(widthMeasureSpec), 300);

}

谢谢你的回复。在我写文章之前,我实际上已经使用过这个解决方案,但它并没有产生可以说“足够完美”的结果。事实上我找到了问题的原因。我把它贴在下面,以防其他人遇到这个问题。
    @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    setMeasuredDimension(measureWidth(widthMeasureSpec), 300);

}