如何获取在 Android 中添加我的视图的容器的宽度

Posted

技术标签:

【中文标题】如何获取在 Android 中添加我的视图的容器的宽度【英文标题】:How to get width of the container in which my view is added in Android 【发布时间】:2011-02-11 11:36:02 【问题描述】:

我在LinearLayout 中有一个ImageView 对象。我正在为ImageView 设置一个动画,它将图像视图从点x 移动到y。现在,起点应该是父容器的右上角。我的问题是,我如何获得视图所在容器的尺寸。我在视图层次结构中看不到 view.getParent().getWidth() 类型的方法。

【问题讨论】:

【参考方案1】:

试试这个:

View parent = (View)view.getParent();
int width = parent.getWidth();

【讨论】:

提前调用getWidth,尚未绘制。您必须添加 ViewTreeObserver.OnGlobalLayoutListener 以在绘制时进行监听【参考方案2】:

也许你不需要,因为你可以使用 % 来制作这样的动画:

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="150" />

【讨论】:

嗯...我差点忘了这个选项。我认为这会对我有所帮助。谢谢。【参考方案3】:

在父视图中添加视图后调用,否则您会出现此异常 java.lang.NullPointerException:尝试调用虚拟方法'int android.view.View.getHeight()'

    int height = ((View) view.getParent()).getHeight();
    int width = ((View) view.getParent()).getWidth();

    int mHeight = ((View) view.getParent()).getMeasuredHeight();
    int mWidth = ((View) view.getParent()).getMeasuredWidth();

【讨论】:

以上是关于如何获取在 Android 中添加我的视图的容器的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表视图中的项目单击中获取歌曲在android中

Android在活动视图中附加片段获取片段已添加错误

android如何使用listview而不是scrollview

Android:如何在普通类中获取给定活动的视图?

如何通过 android 中的回收器视图运行 for 循环?

如何在android studio中添加卫星视图?