在我的应用程序中,我想获得AppBarLayout
的即时大小。我有一个recyclerView
,我想在此recyclerView
上的scroll最小化布局,为此我使用了AppBarLayout
对于此AppBarLayout
,我使用listener来获取此视图的大小,但是在登录时,此大小仅向我显示恒定大小!
我的活动代码:
class MainActivity : AppCompatActivity() {
private lateinit var context: Context
val animals: ArrayList<String> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
context = this
// Loads animals into the ArrayList
addAnimals()
// Creates a vertical Layout Manager
list.layoutManager = LinearLayoutManager(this)
// Access the RecyclerView Adapter and load the data into it
list.adapter = AnimalAdapter(animals, this)
appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
val percentage =
abs(verticalOffset).toFloat() / appBarLayout.totalScrollRange
minLay.alpha = percentage
Log.e("CollapsingToolbarLog",
"VerOffSet : $verticalOffset --- ScrollRange ${convertPixelsToDp(appBarLayout.height.toFloat(),context)}")
})
}
fun convertPixelsToDp(px: Float, context: Context): Float {
return px / (context.resources.displayMetrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT)
}
fun addAnimals() {
animals.add("dog")
animals.add("cat")
animals.add("owl")
animals.add("cheetah")
animals.add("raccoon")
animals.add("bird")
animals.add("snake")
animals.add("lizard")
}
}
在logcat
中,始终显示我150对于appBarLayout
大小!我滚动布局为什么不减少呢?
我该如何解决?
我该如何解决?
欢迎来到论坛
我使用这个:
假设myMainLayout
是您活动的根目录布局,位于AppBar的正下方
public int getAppBarHeight() {
int [] coords = new int[2];
myMainLayout.getLocationOnScreen(coords);
return coords[1];
}