我需要知道一个文本视图的底部Y,当它的大小改变时(通过文本改变或通过屏幕旋转改变宽度),来设置Google Maps视图的填充。下面不是真正的代码,而是一个简单的示例代码,只是为了演示这个问题。
TextView位于另一个布局中,因此获取其顶部将返回0。但当然,TextView的顶部布局不是0。我试过下面的代码,但是我得到了0。
位置[0]=0,位置
1
=0个
顶部=0,高度=86
另外,我不确定
getLocationInWindow
是对的。我是说,如果我的想法是正确的,那可能包括AppBar?但是AppBar在顶层布局之外(例如,
RelativeLayout
class MainActivity : AppCompatActivity(),
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var loc = IntArray(2);
tvAny.getLocationInWindow(loc);
tvAny.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
val height = bottom - top;
Log.d("so", "loc[0] = " + loc[0] +", loc[1] = " + loc[1])
Log.d("so", "top = " + top +", height = " +height)
}
}
}
以及activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:layout_margin="50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvAny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#55FF0000"
android:text="I don't want any damn vegetables."/>
</FrameLayout>
</RelativeLayout>
还有截图: