2014-07-06 7 views
0

TextViewActionBar에 추가하고 싶습니다. 아래는 제가 액션 바 만드는 데 사용하는 조각이다 :TextView가 ActionBar에 표시되지 않습니다.

MainActivity가

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getSupportActionBar().setTitle(""); 
    getSupportActionBar().setHomeButtonEnabled(true); 

    // (...) 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.main_tablet, menu); 
    mTimeTrackingMenu = menu.findItem(R.id.action_time_tracking); 
    return true; 
} 

menu.xml

<item 
    android:id="@+id/action_tt" 
    android:icon="@drawable/icon_2" 
    android:showAsAction="always" 
    android:title="@string/ab_menu_tt"/> 
<item 
    android:id="@+id/action_tt" 
    android:actionViewClass="android.widget.TextView" 
    android:icon="@drawable/icon_1" 
    android:showAsAction="always|withText" 
    android:title="TEST"/> 
<item 
    android:id="@+id/action_refresh" 
    android:icon="@drawable/icon_1_5_2_wh" 
    android:showAsAction="always" 
    android:title="@string/ab_menu_refresh"/> 

나는 XML의 다양한 매개 변수를 변경하려했지만 TextView이 표시되지 않습니다.

나는 또한 동적으로 추가하는 시도했습니다 - 그 다음 일을하지만 TextView는 XML (나는 그것이 menu.xml에서의 첫 번째 항목 앞에 추가 할 필요)에서 생성 된 모든 항목 이후에 추가되고 있었다.

+0

http://stackoverflow.com/questions/9282122/android-4-0-text-on-the-action-bar-never-shows –

답변

0

onCreateOptionsMenu에서는 findItem() 전화하거나 당신이 찾고있는 클래스로 캐스팅 한 후 menuItem.getActionView()를 호출하여 ActionView을 얻을하여 MenuItem를 얻을.

그러나 사실 TextViewMenuItem의 하위 클래스가 아니며 Android의 ActionView에 대한 기반을 제공하는 CollapsibleActionView 인터페이스를 구현하지 않았습니다. http://www.grokkingandroid.com/adding-actionviews-to-your-actionbar/와 안드로이드의 레퍼런스 : 당신이 ActionView에 대한 자세한 내용을 알고 싶은 경우, 튜토리얼 체크 아웃 http://developer.android.com/guide/topics/ui/actionbar.html#ActionView

을하지만 당신은 어떤 특정 위치에 액션 바에 TextView을 추가하려는 경우, 당신은이 수행 할 수 있습니다

getActionBar().setDisplayShowCustomEnabled(true); 
getActionBar().setCustomView(yourCustomizedViewHere); 

이것은 ActionBar의보기를 사용자 정의하고 원하는 것으로 설정하여 목표를 달성 할 수있는 또 다른 방법입니다. 그러나 이것의 단점은 뷰를 만들어서 그들이 많은 작업 인 MenuItem처럼 동작하도록 만드는 것입니다.

또는, 당신은 당신이 원하는 텍스트를 표시하려는 경우, 당신은 단지이 작업을 수행 할 수 있습니다

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
      android:id="@+id/action_tt" 
      android:orderInCategory="100" 
      android:showAsAction="always" 
      android:title="Your text goes here."/> 
</menu> 

그러나 위의 코드의 모양과 느낌이 아주 못생긴.

+0

내 응용 프로그램에서 실제로 사용자 지정보기가 있었지만 ' 다른 UI 구성 요소 (제대로 기억하는 경우 일부 'ViewPager')와 제대로 작동하며 "정상적인"ActionBar로 다시 전환해야했습니다. – syntagma

+0

@REACHUS 글쎄, 내 대답은 세 번째 방법을 시도해보십시오. BTW는 거의 1 년 동안 Android를 개발해 왔기 때문에 개발은 실제로는 적어도 때로는 잘하는 것이라고 생각합니다. :-( –

+0

@REACHUS 또한 비슷한 질문을 여기에서보십시오. http://stackoverflow.com/questions/13722251/how-to-create-a-textview-in-the-res-menu –

관련 문제