如何在Android棒棒糖上声明扩展高度的工具栏/操作栏?
我在Googledevise应用栏指南中看到了延伸高度的应用栏。 我如何在Android棒棒糖中实现这些?
您需要使用新的工具栏小部件来实现这一点。 工具栏对其最小高度进行特殊处理,以声明用于button(和动作)的空间量。
在下面的示例中,我们将高度设置为128dp(规格中定义的为56dp + 72dp),但将android:minHeight
保留为标准actionBarSize(通常为56dp)。 这意味着button和操作被限制在顶部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
并使用它的属性。
感谢您的问题,它的答案,而且在本地和supportlibrary的工具栏的实施:)
我们可以玩更多。 我们可以在运行时使用Height和MinimalHeight。
高度就是ToolBar的高度,它很简单,每个人都能理解,重力按照这个高度来行事。
minimalHeight更棘手,不应该在最低56dp。 这个minHeight用来放置你的menuItem的行。 这条线是在你的minHeight的midlle。
因此,您可以将此代码添加到您的活动中,以自行查看差异。 🙂
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)findViewById(R.id.toolbar);
当你这样做,你获得:
但是如果你离开animation继续,你会得到:
这就是为什么在大多数情况下将工具栏android:layout_height设置为wrap_content是一个很好的select,因为工具栏将根据其内容调整其高度(并且可以在运行时更改内容:)
这也是如何在运行时改变你的工具栏的大小。
感谢Chris Banes为您在操作栏上所做的惊人的工作。