我在Google Design的应用栏指南中看到了 扩展高度 应用栏。 我如何在Android Lollipop中实现这些效果?
android:minHeight
为标准的actionBarSize
(通常为56dp)。这意味着按钮和操作被限制在上面的56dp垂直定位。然后,我们可以使用android:gravity
将标题定位在底部。<Toolbar
android:id="@+id/toolbar"
android:layout_height="128dp"
android:layout_width="match_parent"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
android:gravity="bottom" />
如果您使用的是AppCompat,则将声明更改为使用android.support.v7.widget.Toolbar
,并使用其属性。
Runnable toolBarAnimator=new Runnable() {
@Override
public void run() {
if(postICS){
// toolbar.setTranslationX(iteration);
// toolbar.setElevation(iteration);
toolbar.setMinimumHeight(iteration * 5);
toolbar.getLayoutParams().height++;
}
uiThreadHanlder.postDelayed(this,16);
iteration++;
if(iteration>150)iteration=0;
}
};
Handler uiThreadHanlder=new Handler();
int iteration=0;
@Override
protected void onResume() {
super.onResume();
//launch the animation
uiThreadHanlder.postDelayed(toolBarAnimator, 1000);
}
@Override
protected void onPause() {
super.onPause();
//stop the animation
uiThreadHanlder.removeCallbacks(toolBarAnimator);
}
工具栏(toolbar)的位置:
toolbar = (Toolbar) findViewById(R.id.toolbar);
这样做可以得到如下效果:
但是,如果你让动画继续播放,你会得到如下效果:
这就是为什么在大多数情况下将工具栏(android:layout_height)设置为wrap_content是一个不错的选择,因为工具栏将根据其内容自适应高度(并且您可以在运行时更改内容 :)
这也是如何在运行时更改工具栏大小的方法。
感谢Chris Banes在操作栏方面所做的出色工作。
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
- dm78
layout_height
是正确的方法,那么我期望monsoon在这里描述的解决方法也不再是一个解决方法,而是正确的方法?https://code.google.com/p/android/issues/detail?id=77874 - Thomas Keller@dimen/action_bar_size_x2
,在手机上使用112dp,在平板电脑上使用128dp。 - Roman NurikbuttonGravity
设置为bottom
时,android:paddingBottom
属性会导致奇怪的间距问题。在这里,titleMarginBottom
属性似乎是更好的选择,对吗? - Paul Burke