Dialog getWidth 和 getHeight return 无论如何都没有整数
Dialog getWidth and getHeight return no integers no matter what
我已经实现了在 Whosebug 上可以找到的所有内容。这是我的代码:
主要活动:
statusDialog.getWindow().setAttributes(lp);
statusDialog.show();
final LinearLayout drawbar = (LinearLayout) statusDialog.findViewById(R.id.drawbar);
int barWidth = drawbar.getWidth();
int barHeight = drawbar.getHeight();
DrawBar(drawbar);
}
public void DrawBar(View v){
LinearLayout statusDialog = (LinearLayout) v;
Paint paint = new Paint();
paint.setColor(Color.parseColor("#CD5C5C"));
Bitmap bg = Bitmap.createBitmap(480, 800, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bg);
View bar = statusDialog.findViewById(R.id.drawbar);
LinearLayout test = (LinearLayout) statusDialog.findViewById(R.id.drawbar);
int barWidth2 = statusDialog.getLayoutParams().width;
int barHeight2 = statusDialog.getLayoutParams().height;
int barWidth3 = v.getLayoutParams().width;
int barHeight3 = v.getLayoutParams().height;
int barWidth4 = bar.getLayoutParams().width;
int barHeight4 = bar.getLayoutParams().height;
int barWidth5 = v.getMeasuredWidth();
int barHeight5 = v.getMeasuredHeight();
int barWidth6 = statusDialog.getWidth();
int barHeight6 = statusDialog.getHeight();
test.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
int barheight7 = test.getMeasuredHeight();
int barwidth7 = test.getMeasuredWidth();
canvas.drawRect(0, 0, 50, 50, paint);
//canvas.drawRect(0, 0, barWidth, barHeight, paint);
statusDialog.setBackgroundDrawable(new BitmapDrawable(this.getResources(), bg));
}
drawbar.xml:
<LinearLayout
android:id="@+id/drawbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
statusDialog.show 函数工作正常并显示了它应该显示的对话框。在将布局绘制到屏幕上之后,我正在尝试在屏幕上绘制一个栏,以水平填充我在此处指定的布局中的内容。如果我将布局高度硬编码为 [N]dp,我会返回一个像素计数,但除此之外,所有内容都只是 returns -1,我无法用 [=13 动态填充最后注释掉的行=].
我不知道我做错了什么。哈尔普
不完全确定这里的真正答案,但我发现我的问题完全无关紧要,是由我自己的 ignorance/expected 行为引起的。
480x800(或任何大小)位图自动缩放到我添加它的 FILL_PARENT 视图中。所以基本上我在一个无关紧要的问题上浪费了 2 天,因为我试图计算进度条包装器的宽度。 tl;dr,在填充或匹配父项的测量视图中仅获得 return 个整数 -1 似乎是正常的。
themoreyouknow.gif
我已经实现了在 Whosebug 上可以找到的所有内容。这是我的代码:
主要活动:
statusDialog.getWindow().setAttributes(lp);
statusDialog.show();
final LinearLayout drawbar = (LinearLayout) statusDialog.findViewById(R.id.drawbar);
int barWidth = drawbar.getWidth();
int barHeight = drawbar.getHeight();
DrawBar(drawbar);
}
public void DrawBar(View v){
LinearLayout statusDialog = (LinearLayout) v;
Paint paint = new Paint();
paint.setColor(Color.parseColor("#CD5C5C"));
Bitmap bg = Bitmap.createBitmap(480, 800, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bg);
View bar = statusDialog.findViewById(R.id.drawbar);
LinearLayout test = (LinearLayout) statusDialog.findViewById(R.id.drawbar);
int barWidth2 = statusDialog.getLayoutParams().width;
int barHeight2 = statusDialog.getLayoutParams().height;
int barWidth3 = v.getLayoutParams().width;
int barHeight3 = v.getLayoutParams().height;
int barWidth4 = bar.getLayoutParams().width;
int barHeight4 = bar.getLayoutParams().height;
int barWidth5 = v.getMeasuredWidth();
int barHeight5 = v.getMeasuredHeight();
int barWidth6 = statusDialog.getWidth();
int barHeight6 = statusDialog.getHeight();
test.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
int barheight7 = test.getMeasuredHeight();
int barwidth7 = test.getMeasuredWidth();
canvas.drawRect(0, 0, 50, 50, paint);
//canvas.drawRect(0, 0, barWidth, barHeight, paint);
statusDialog.setBackgroundDrawable(new BitmapDrawable(this.getResources(), bg));
}
drawbar.xml:
<LinearLayout
android:id="@+id/drawbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
statusDialog.show 函数工作正常并显示了它应该显示的对话框。在将布局绘制到屏幕上之后,我正在尝试在屏幕上绘制一个栏,以水平填充我在此处指定的布局中的内容。如果我将布局高度硬编码为 [N]dp,我会返回一个像素计数,但除此之外,所有内容都只是 returns -1,我无法用 [=13 动态填充最后注释掉的行=].
我不知道我做错了什么。哈尔普
不完全确定这里的真正答案,但我发现我的问题完全无关紧要,是由我自己的 ignorance/expected 行为引起的。
480x800(或任何大小)位图自动缩放到我添加它的 FILL_PARENT 视图中。所以基本上我在一个无关紧要的问题上浪费了 2 天,因为我试图计算进度条包装器的宽度。 tl;dr,在填充或匹配父项的测量视图中仅获得 return 个整数 -1 似乎是正常的。
themoreyouknow.gif