8

두 번 높이의 액션 바를 (소재 가이드 라인의 예와 같이) 갖고 싶지만 제목에 2 줄의 텍스트가있을 수 있습니다. 사용중인 제목은 동적이며 페이지에 표시된 항목에 따라 다릅니다. 한 줄이 정상적인 동작 표시 줄처럼 보이면 2 줄이 있으면 텍스트가 끊어져서 새 줄로 떨어집니다. 하나 또는 두 개의 줄이 있더라도 작업 단추는 텍스트의 맨 위 줄에 맞춰져 있어야합니다.제목에 두 줄이 표시된 Android 툴바?

나는 행동 바를하는 새로운 동적 인 방법이라고 생각 했으므로 나는 아마도 그 방법이 될 것이라고 생각했다. (내가 거기에 있다는 것을 알고있다. 라인,하지만 그 중 하나를 위해 가고있는 것처럼 보이지 않는). Android 4.4 이상을 사용하고 있으므로 툴바에 appcompat v7 라이브러리를 사용해야합니다.

제목 텍스트 뷰가 단지 한 줄로 제한된다는 코드를 보면 (https://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v7/appcompat/src/android/support/v7/widget/Toolbar.java - 코드 mTitleTextView.setSingleLine(); 포함) 발견했습니다.

다음은 한 줄의 자막이 있기 때문에 그 텍스트의 형식을 변경할 수 있다고 생각합니다. 제목 텍스트와 동일하게 형식을 지정할 수 있으며 필요한 경우 두 부분으로 나눌 수 있습니다. 내가 문자열을 분할하는 몇 가지 기본 코드를 썼다지만, 그것을 나눌 필요가 있는지 말할 수에 의존 - 그리고 실제로는 toolbar.isTitleTruncated() 항상 (직접 내 도구 모음 개체에서 모두 getSupportActionBar().isTitleTruncated())에서 false를 반환 발견.

은 내가 ToolbarTextView 포장에 대한 답변 here을 시도,하지만 난 그렇게 할 때 도구 모음 액션 버튼으로 정렬 할 TextView을 얻을 수 없습니다. 단일 행 (상단 패딩 사용)에 올바르게 맞춘다면 이중 행은 잘못이며 그 반대의 경우도 마찬가지입니다. 여기 내 코드는 다음과 같습니다

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/view_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<fragment 
    android:id="@+id/fragment_pager" 
    android:name="com.example.ProductPagerFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/product_details_toolbar" 
    style="@style/style.toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/double_height_toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:gravity="top" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > 

    <TextView 
     android:id="@+id/product_details_title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="top" 
     android:paddingTop="@dimen/padding_normal" 
     style="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse" 
     android:maxLines="2" /> 

</android.support.v7.widget.Toolbar> 

사람이 어떤 아이디어가 있습니까? 이것은 정말 안드로이드 지침에 위배되어서 그렇게 어려운 것이어야합니까?

업데이트 : 데모 용으로 추가 이미지 :

이 보일 것입니다 방법 :

How it should look

지금 보이는 방법 :

How it does look

+0

나는 https://code.google.com/p/android/issues/detail을 만들어? id = 81987 isTitleTruncated() 문제가 작동하지 않습니다. – gkee

답변

4

음, 그것은 잘 동작 나를.

Screenshot

<android.support.v7.widget.Toolbar 
     android:layout_height="200dp" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:gravity="top" 
     android:background="?attr/colorPrimaryDark" 
     app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

    <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Title" 
      android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"/> 

</android.support.v7.widget.Toolbar> 
+1

한 줄의 텍스트가 있으면 잘 작동합니다. 두 개가 있다면 정렬이 엉망이됩니다. 더 긴 제목으로 사용해보십시오. – gkee

+0

toolbar.setTitle()을이 솔루션과 함께 사용하지 마십시오. 툴바보기에서 TextView를 가져 와서 프로그래밍 방식으로 텍스트를 설정하십시오. – Erdi

관련 문제