一、案例
xml
布局代码
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <!-- 由于最外层不是 Layout,则这里为根布局 --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffc"> <!-- 再添加一个内部视图布局 --> <LinearLayout android:layout_marginTop="200dp" android:layout_marginLeft="70dp" android:layout_width="300dp" android:layout_height="300dp" android:background="#fcf"> <!-- 添加视图组件 --> <TextView android:id="@+id/dzm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="100dp" android:layout_marginTop="200dp" android:text="DZM TEST" android:textSize="20sp" /> </LinearLayout> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
- 效果
二、获取布局位置
- 视图可以通过调用
getLeft()
、getTop()
、getWidth()
、getHeight()
来获取视图的尺寸以及坐标位置,这些方法返回的值是相对其父视图的位置。 - 注意:这些方法获取到的位置与尺寸单位是
像素(px)
。
// 获取视图组件 TextView tv = findViewById(R.id.dzm); float w = tv.getWidth(); float h = tv.getHeight(); float left = tv.getLeft(); float top = tv.getTop(); // 输出 Log.e(TAG, "width:" + w); Log.e(TAG, "height:" + h); Log.e(TAG, "left:" + left); Log.e(TAG, "top:" + top);
2021-09-27 15:14:22.567 1253-1253/com.example.test E/MainActivity: width:250.0 2021-09-27 15:14:22.567 1253-1253/com.example.test E/MainActivity: height:71.0 2021-09-27 15:14:22.567 1253-1253/com.example.test E/MainActivity: left:263.0 2021-09-27 15:14:22.567 1253-1253/com.example.test E/MainActivity: top:525.0