Google 디자인 앱 바 가이드 라인 에서 확장 된 높이 앱 바를 보았습니다 . Android Lollipop에서 어떻게 구현합니까?
답변
이를 위해서는 새로운 툴바 위젯을 사용해야합니다. 도구 모음에는 버튼 (및 작업)에 사용되는 공간의 양을 선언하기 위해 최소 높이에 대한 특수 처리가 있습니다.
아래 예에서는 높이를 128dp (사양에 정의 된대로 56dp + 72dp)로 설정하지만 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
하는 경우 대신 사용할 선언을 변경하고 속성을 사용하십시오.
답변
귀하의 질문, 답변 및 네이티브 및 supportlibrary의 도구 모음 구현에 감사드립니다 🙂
그리고 우리는 더 많이 플레이 할 수 있습니다. 런타임에 Height 및 MinimalHeight를 사용할 수 있습니다.
높이는 ToolBar 높이이며 간단하며 모든 신체가 이해하며 중력은 그 높이에 따라 작용합니다.
minimalHeight는 더 까다 롭고 최소 56dp가 아니어야합니다. 이 minHeight는 menuItem의 줄을 배치하는 데 사용됩니다. 이 선은 minHeight의 중간에 있습니다.
따라서이 코드를 활동에 추가하여 차이점을 직접 확인할 수 있습니다. 🙂
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 = (툴바) findViewById (R.id.toolbar);
이렇게하면 다음을 얻을 수 있습니다.
그러나 애니메이션을 계속 종료하면 다음을 얻을 수 있습니다.
이것이 툴바가 내용에 따라 높이를 조정하기 때문에 android : layout_height를 wrap_content로 설정하는 것이 대부분의 경우 좋은 옵션입니다. (그리고 런타임에 내용을 변경할 수 있습니다.
이것은 또한 런타임에 툴바 크기를 변경하는 방법입니다.
액션 바에서 놀라운 작업을 해주신 Chris Banes에게 감사드립니다.