Android Lollipop에서 확장 된 높이 툴바 / 액션 바를 어떻게 선언하나요?


답변:


144

이를 위해서는 새로운 툴바 위젯을 사용해야합니다. 도구 모음에는 버튼 (및 작업)에 사용되는 공간의 양을 선언하기 위해 최소 높이에 대한 특수 처리가 있습니다.

아래 예에서는 높이를 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하는 경우 대신 사용할 선언을 변경하고 속성을 사용하십시오.


3
사용 layout_height하는 방법이 있다면 여기에 몬순이 설명하는 해결 방법도 해결 방법이 아니지만 올바른 방법 일 것으로 예상합니다. code.google.com/p/android/issues/detail?id=77874
Thomas Keller

3
차원에 대한 표현식도 선언하고 싶지만 그렇게 할 수 없습니다.
Chris Banes 2014 년

37
보너스 포인트의 경우, 예를 들어 증분을 사용하여 작업 표시 줄의 크기를 @dimen/action_bar_size_x2조정하고 휴대 전화에서는 112dp, 태블릿에서는 128dp 사용
Roman Nurik

7
android:paddingBottombuttonGravity로 설정 되면 이상한 간격이 발생 합니다 bottom. titleMarginBottom속성은 아니, 여기에 더 나은 옵션 것 같아?
Paul Burke

5
@RomanNurik 캘린더 앱의 확장 된 툴바는 어떻게 작동합니까? 힌트
Raghunandan 2014

3

귀하의 질문, 답변 및 네이티브 및 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에게 감사드립니다.


@MohammadHadi 나는 postICS 같은 것을 정의 될 것이라고 상상 해요 :boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
dm78
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.