2015-02-04 4 views
6

안녕하세요 저는 앱에서 슬라이딩 탭 레이아웃을 사용하고 있습니다. 내가 이해하지 못하는 유일한 이유는 내 탭 텍스트가 대문자로 된 이유입니다.슬라이딩 탭 레이아웃 텍스트는 대문자입니다

탭이 슬라이딩 탭 클래스 안에 들어가는 텍스트를 인쇄했는데 대문자가 아닙니다. 둘러 보았으므로 toUpperCase 메서드가 호출되지 않습니다.

private void populateTabStrip() { 
     final PagerAdapter adapter = mViewPager.getAdapter(); 
     final View.OnClickListener tabClickListener = new TabClickListener(); 

     for (int i = 0; i < adapter.getCount(); i++) { 
      View tabView = null; 
      TextView tabTitleView = null; 

      if (mTabViewLayoutId != 0) { 
       // If there is a custom tab view layout id set, try and inflate it 
       tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, 
         false); 
       tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId); 
      } 

      if (tabView == null) { 
       tabView = createDefaultTabView(getContext()); 
      } 

      if (tabTitleView == null && TextView.class.isInstance(tabView)) { 
       tabTitleView = (TextView) tabView; 
      } 

      if (mDistributeEvenly) { 
       LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView.getLayoutParams(); 
       lp.width = 0; 
       lp.weight = 1; 
      } 

      tabTitleView.setText(adapter.getPageTitle(i)); 
      tabTitleView.setTextColor(getResources().getColor(R.color.da_blue)); 
      tabView.setOnClickListener(tabClickListener); 
      String desc = mContentDescriptions.get(i, null); 
      if (desc != null) { 
       tabView.setContentDescription(desc); 
      } 

      mTabStrip.addView(tabView); 
      if (i == mViewPager.getCurrentItem()) { 
       tabView.setSelected(true); 
      } 
     } 
    } 

나는 스타일을 통해 그것을 할 수 있는지하지만 어느 하나를 이용하기 위해서 정말 확실하지 않다 : 여기

텍스트를 설정하는 클래스의 코드입니다. 이것은 내 스타일에 있습니다.

<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="android:actionBarTabTextStyle">@style/ActionBarTabTextStyle.Tabtheme</item> 
     <item name="actionBarTabTextStyle">@style/ActionBarTabTextStyle.Tabtheme</item> 
    </style> 


    <style name="ActionBarTabTextStyle.Tabtheme" parent="@android:style/Widget.Holo.ActionBar.TabText"> 
     <item name="android:textAllCaps">false</item> 
    </style> 
</resources> 
+0

당신은 L이 표시됩니까? 이는 기본 동작입니다. 모든 대문자를 원하지 않으면이 대답을 참조하십시오. http://stackoverflow.com/questions/26958909/why-is-my-button-text-coerced-to-all-caps-on-ollipop/26959656#26959656 –

답변

5

답변은 createDefaultTabView() 메소드에서 발견되었습니다.

textView.setAllCaps (true)를 false로 변경해야합니다.

protected TextView createDefaultTabView(Context context) { 
    TextView textView = new TextView(context); 
    textView.setGravity(Gravity.CENTER); 
    textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, TAB_VIEW_TEXT_SIZE_SP); 
    textView.setLayoutParams(new LinearLayout.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

    TypedValue outValue = new TypedValue(); 
    getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, 
      outValue, true); 
    textView.setBackgroundResource(outValue.resourceId); 
    textView.setAllCaps(false); **// Changed to false and it did the trick** 

    int padding = (int) (TAB_VIEW_PADDING_DIPS * getResources().getDisplayMetrics().density); 
    textView.setPadding(padding, padding, padding, padding); 

    return textView; 
} 
+0

위의 메소드에서 TAB_VIEW_TEXT_SIZE_SP 값을 변경하려고했지만 반영되지 않은 변경 사항 –

16

는 "android.support.design.widget.TabLayout는"app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"

+0

이것은 나를 위해 일했습니다 –

+0

감사합니다. 그것은 나를 위해 일합니다! – susemi99

0

그냥 populateTabStrip이 라인 tabTitleView.setAllCaps(false);을 추가 설정하는 데 필요한 사용하는 경우()