- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个扩展 ImageView 的名为 FractalView 的类。我的目标是使用具有整个屏幕大小的此类绘制分形。它是我的 Activity 布局文件中唯一的 View ,除了顶级 LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFFFF">
<com.antonc.fractal_wallpaper.FractalView
android:id="@+id/fractal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"/>
</LinearLayout>
如您所见,我对 FractalView 和 LinearLayout 的 layout_width 和 layout_height 都使用了“match_parent”。在这一点上,我假设 FractalView 的大小设置为某个值,因为它匹配它的父级,它匹配它的父级(即整个屏幕)。然后我尝试使用 getWidth() 和 getHeight() 检测 FractalView 可用的大小:
public class FractalView extends ImageView {
private Context mContext;
private Handler mHandler;
private int mScrWidth;
private int mScrHeight;
public FractalView(Context context) {
super(context);
mContext = context;
init();
}
private void init() {
mScrWidth = getWidth();
mScrHeight = getHeight();
// Breakpoint
}
@Override
protected void onDraw(Canvas canvas) {
[...]
}
}
但是当我的代码到达断点时,调试器显示 mScrWidth 和 mScrHeight 为零。我尝试使用 getMeasuredWidth() 和 getMaxWidth(),但它们也返回不正确的值。我已经阅读了几个类似问题的答案,即 this one他们都解释说 getWidth() 返回图像 after 绘制后的大小,而我真正需要的是该 View 可用区域的宽度,before 我开始画画了。
有没有办法检索这些宽度和高度值?
最佳答案
在 onMeasure()
之后, View 的大小才可用,尤其是当它设置为 wrap_content
或 fill_parent
时。
您应该在 View 代码中或在布局树观察器中访问 onMeasure()
中或之后的大小:
LinearLayout layout = (LinearLayout)findViewById(R.id.mylayout);
ViewTreeObserver vto = layout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
this.layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();
}
});
您还需要将 android:id="@+id/mylayout"
添加到您的 LinearLayout 以使第二个工作。
关于android - 如果由 android :layout_width ="match_parent" 设置 getWidth() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592930/
我有下面的代码,它是在一个函数中定义的,该函数实际上设置父组件的宽度并进行布局...这个函数是从 4 个地方调用的,在一个地方有一个场景出现下面的错误,你可以看到我有检查了未定义,但它仍然在这个 IF
我正在处理 Java JFrame 对象,每当我调用 getWidth() 和 getHeight() 的值时,它都是总是返回超过我使用 setPreferredSize() 函数为面板设置的值。 有
我有一个图像displayStartText和originalStartText这样初始化: Image originalStartText = new ImageIcon(getClass().ge
为什么两个输出都打印84?第一个应显示为 84,第二个应显示为 220。如果我再次单击,则两个输出均显示为 220。 public void btnClick(View v) { System
我有一个算法,可以渲染具有宽度和高度的对象。但是当我使用 setWidth() 时,该对象实际上并没有获得该宽度,它以某种方式获得了我给它的宽度的 x2 之类的东西。检查下面的代码: var
我很难找到为什么这段代码返回空指针: import java.awt.Graphics2D; import java.awt.Rectangle; public class Move { priv
我想在加载后获取位图的宽度,我使用这段代码,其中 mybackground 是一个等于 R.drawable.background 的 int。 background=BitmapFactory.de
我希望通过使用 gamePanel 的 getWidth 方法来定位 Racket ,但它返回 0。它对于框架工作正常,对于面板也有效,但我决定重写大量代码并现在我无法让它工作。感谢帮助:) impo
我知道 Display 方法 getWidth() 自 API 13 以来已被弃用。我有以下代码行: Display display = ((WindowManager) getContext().g
我有一个像这样的 ImageView 我正在尝试通过使用获取在 imageview 中显示的图像的宽度 ImageView artCover = (ImageView)findViewById(R
我想让我的 ImageView 的大小是基于其宽度的矩形,这是通过覆盖 onGlobalLayout() 并放置 photo.getWidth() 完成的。但它只在竖屏下有效,在横屏下无效。 肖像效果
我正在 relativeLayout 中动态创建一些 ImageView,但我需要根据屏幕的高度和宽度改变大小。在我设置高度时,尚未创建 View 和布局,这意味着 getHeight() 和 get
这些方法在动态检索时返回正确的值,例如。在 onCreate() 中,但唯一的异常(exception)是当维度在 xml 布局文件中指定为 undefined 时,像 'wrap content'
我的 android 应用程序可绘制文件夹中有一个 jpg 图像,分辨率为 1000x600。我像这样将该图像加载到位图 Bitmap bitMap = BitmapFactory.decodeRe
本文整理了Java中android.graphics.YuvImage.getWidth()方法的一些代码示例,展示了YuvImage.getWidth()的具体用法。这些代码示例主要来源于Githu
本文整理了Java中am.widget.zxingscanview.ZxingScanView.getWidth()方法的一些代码示例,展示了ZxingScanView.getWidth()的具体用法
所以我想创建一个数轴类,我可以用它来显示沿单个轴的单个点,但我希望它能够响应当前所在容器的大小,并相对于该容器更改其大小。不幸的是,我无法正确使用 getWidth() 和 getHeight() 来
我正在重写 JPanel 的 paintComponent() 方法以在屏幕上绘制一些内容。 这就是它的样子: 我使用以下代码来设置剪切区域。这样边缘就可以弯曲。 RoundRectangle2D r
我需要调用getWidth()在我的 JPanel 对象“gameboard”上并将其存储在变量“width”中。这看起来很简单 int width = gameboard.getWidth(); 但
我通过扩展 LinearLayout 创建了一个自定义 View 。我可以在布局生命周期的哪个第一个点调用 subview 的 getWidth() 并获得正值? 最佳答案 如果在 onResume
我是一名优秀的程序员,十分优秀!