2016-08-23 2 views
2

안드로이드 7.0으로 업그레이드하고 모든 SlidingTabLayout 막대에 하단에 여분의 공백이 생깁니다. 이것이 Android 팀에서 의도했는지 여부는 모르지만 새 공백을 없애는 방법이 있습니까?Android 7.0 N의 SlidingTabLayout 표시 줄에 여분의 공백이 있습니까?

슬라이딩 탭 레이아웃 : https://developer.android.com/samples/BasicTransition/src/com.example.android.common/view/SlidingTabLayout.html

슬라이딩 탭 스트립 : 나는 여기에서 찾을 수 있습니다 안드로이드에서 제공하는 코드를 사용하고

Extra White Space on SlidingTabLayout bar

여기 https://developer.android.com/samples/BasicTransition/src/com.example.android.common/view/SlidingTabStrip.html

는의 조각이다 내 레이아웃 코드 :

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/tool_bar" 
     android:layout_height="56dp" 
     android:layout_width="match_parent" 
     android:background="@drawable/toolbar_gradient" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:theme="@style/Base.ThemeOverlay.AppCompat.Dark" /> 

    <com.airsenze.wineinsider.controllers.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/white"/> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:layout_width="match_parent"> 
</android.support.v4.view.ViewPager> 

고마워요! 더 이상 정보가 필요하면 알려주세요.

+0

"하지 않음 이것이 안드로이드 팀이든 아니든 "- 안드로이드 팀의 코드가 아니라 코드입니다. Android 예제로 시작했지만 이와 같은 Android 예제가 API 수준에서 일관되게 유지 될 수 있다고 보장 할 수는 없습니다. 이것들은 라이브러리 클래스를 지원하지 않는 예입니다. 실제로 코드의 수정 된 버전을 직접 관리해야합니다. – CommonsWare

+0

그래, 이해해. Android 팀을 아무 것도 탓하지 않으려 고합니다. 나는 공백을 없애기 위해 아침 내내 노력했지만 아무것도 작동하지 않는 것 같습니다. 누군가가 그것을 제거하는 빠른 해결책을 가지고 있는지 궁금해. – Lunkie

+0

툴바 높이를'wrap_content'로 설정하지 않으시겠습니까? –

답변

10

distributeEvenly이 참일 때 발생합니다. 그냥 SlidingTabLayout.java 클래스의 populateTabStrip() 방법에

lp.width = 0; 

을 언급하고 문제가 해결 될 것입니다.

+0

이것은 누우 장비에 적합합니다! 그래도 이전 버전의 작업에 영향을 주는지 궁금합니다 ... 감사합니다. –

+1

예. 필자는 안드로이드 4.0에서 마지막 버전 (7.0)까지 테스트했는데, 괜찮습니다. – Afshin

+1

초기 문제를 해결하는 동안이 솔루션은 다른 탭을 추가합니다. 탭이 더 이상 균등하게 분산되지 않습니다. "lp.width = 0"을 "lp.width = ViewGroup.LayoutParams.MATCH_PARENT"로 바꿨습니다. 이것은 작동하는 것 같습니다. – MihaiW

0

는 구성 요소 스타일 파일이 다른 구성 요소가 위의 30dp를 표시합니다, 내 구성 요소의 스타일 파일에

--<item name="android:windowIsFloating">false</item>-- 

이 줄을 삭제 난 그냥 BottomDialog와 유사한 버그를 발견

--<item name="android:windowIsFloating">false</item>-- 

선언이 있습니까 진짜 바닥. 이 버그를 acuse하는 항목을 찾기 위해 하나

android:theme="@style/AppTheme.AppBarOverlay" 

삭제 항목 하나를 난 당신이 파일을 확인한다고 생각합니다.

0

나는 당신에게 도움이 될지 모르겠지만 여전히 레이아웃에서 이것을 시도 할 것입니다. 사용자 정의 높이 (48dp)를 설정하고 누가 (nougat) 조건을 설정하십시오. 불행히도 나를 위해 작동 :).

<com.airsenze.wineinsider.controllers.SlidingTabLayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:background="@color/white"/> 
0

탭의 TextView에 max lines을 1로 설정해야합니다.

1. 변경 SlidingTabLayout :

protected TextView createDefaultTabView(Context context) { 
    TextView textView = new TextView(context); 
    textView.setMaxLines(1); 
    ... 
} 

2. 사용자 정의 탭 레이아웃 예를 들어

:

두 가지 방법이 있습니다

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="?selectableItemBackground" 
       android:gravity="center_horizontal" 
       android:orientation="vertical" 
       android:paddingBottom="8dp" 
       android:paddingTop="8dp"> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAllCaps="true" 
     android:textColor="@color/text_tab" 
     android:maxLines="1" <=============attention============== 
     android:textSize="12dp" 
     android:textStyle="bold"/> 

</LinearLayout> 
관련 문제