我想获取在activity_main.xml中定义的View的尺寸,以基于高度和宽度创建一个Bitmap
。将它们写入textView
会显示0或停止应用程序。我检查了此视图是否为null
,但不是。我可以这样获取视图尺寸吗?
代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.textView);
View view = (View) findViewById(R.id.view);
int x = view.getMeasuredWidth();
int y = view.getHeight();
int radius = 10;
textView.setText(view.getHeight());
// if (view == null) textView.setText("View is null");
// else textView.setText("View is not null");
Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
这是actvity_main.xml:
<View
android:id="@+id/view"
android:layout_width="400dp"
android:layout_height="400dp"
android:layout_marginLeft="44dp"
android:layout_marginStart="44dp"
android:layout_marginTop="136dp"
android:background="@color/green"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="209dp"
android:layout_height="48dp"
android:layout_marginLeft="44dp"
android:layout_marginStart="44dp"
android:layout_marginTop="28dp"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
答案 0 :(得分:1)
您正在此行TextView
的{{1}}中设置整数值。尝试将其转换为String,然后进行如下设置。
textView.setText(view.getHeight());
要获取视图,请在textView.setText(String.valueOf(view.getHeight()));
中的上方行或按以下方式使用
onResume
我希望它对你有用 谢谢
答案 1 :(得分:1)
getWidth和height将返回0。
为了在适当的时候获取尺寸,您有2个选择:
ViewTreeObserver
,并在调用它时将其删除。2.(我认为更容易)在视图底部添加一个可运行的视图:
view.post(new Runnable() {
@Override
public void run() {
int x = view.getMeasuredWidth();
int y = view.getHeight();
}
})
post()
方法回调仅在视图放大后才被调用。
快乐的编码
答案 2 :(得分:0)
您可以尝试此解决方案
int height;
int width;
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver();
viewTreeObserver .addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override public void onGlobalLayout () {
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
height = view.getLayoutParams().height;
width = view.getLayoutParams().width;
}
});
答案 3 :(得分:0)
只需使用此代码:)
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;
现在您可以在项目中使用height
和width
变量