2013-03-08 3 views
2

다음은 작성하려는 작업 표시 줄입니다. 여기 조치 버튼이있는 Android 사용자 정의 작업 모음

enter image description here

내가 메뉴에 넣어 항목입니다.

<item 
     android:id="@+id/search" 
     android:title="Search" 
     android:showAsAction="ifRoom|collapseActionView" 
     android:actionLayout="@layout/search_layout" 
    /> 

    <item 
     android:id="@+id/search1" 
     android:title="PHOTO" 
     android:showAsAction="ifRoom" 
     android:actionLayout="@layout/search_layout" 
    /> 

collapseActionView - 시작시 검색 메뉴를 접습니다.

enter image description here 검색 항목을 클릭하면 그림 1과 같은 편집 텍스트가 표시됩니다.하지만 클릭 한 후에 만 ​​볼 필요가 있습니다.

Always로 설정하면 fill_parent로 인해 메뉴 항목이 화면에서 팝됩니다.

<EditText 
     android:id="@+id/txt_search" 
     android:inputType="text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    /> 

메뉴 항목없이 제목 표시 줄 레이아웃의 너비를 가져올 수 있습니까? 이 경우 편집 텍스 트 항목에 고정 너비를 설정할 수 있습니다.

작동 시키려면 다른 방법이 있습니까? 사용자 정의 제목 레이아웃 + 메뉴 항목이어야합니다. 이 사용자 정의 레이아웃은 메뉴 항목과 아이콘 사이의 빈 공간을 채워야합니다.

답변

2

작업 표시 줄 제목 대신 사용자 지정보기를 설정하여이 작업을 수행 할 수 있습니다.

ActionBar actionBar = getActionBar(); 
actionBar.setCustomView(R.layout.search_layout); 
actionBar.setDisplayShowCustomEnabled(true); 

결과는 액션 버튼을 제외한 작업 바의 전체 폭을 채우고 EditText이다. 질문의 첫 번째 이미지와 정확히 같습니다.

+0

완벽! 고맙습니다. – inc

2

맞춤 동작 막대을 사용하면 문제를 해결할 수 있습니다. 사용자 정의 액션 바 위해 당신은 다음에 따라 사용자 레이아웃을 만들 수 있습니다

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:enabled="false" 
android:orientation="horizontal" 
android:layout_alignParentRight="true" 
android:layout_gravity="right" 
android:paddingEnd="8dip" 
android:paddingRight="8dip" 
android:paddingLeft="8dip"> 

<EditText 
    android:layout_width="200dip" 
    android:layout_height="wrap_content" 
    android:id="@+id/action_bar_edt_search"/> 
<ImageButton 
    android:layout_width="50dip" 
    android:layout_height="50dip" 
    android:id="@+id/action_bar_img_search" 
    android:background="@drawable/search_ico"/> 
<Button 
    android:id="@+id/action_bar_search" 
    android:layout_alignParentRight="true" 
    android:layout_gravity="right" 
    style="@style/ActionBarButtonWhite" /> 

<Button 
    android:id="@+id/action_bar_photo" 
    android:layout_alignParentRight="true" 
    android:layout_gravity="right" 
    style="@style/ActionBarButtonOffWhite" /> 

<Button 
    android:id="@+id/action_bar_video" 
    android:layout_alignParentRight="true" 
    android:layout_gravity="right" 
    style="@style/ActionBarButtonOffWhite" /> 

<Button 
    android:id="@+id/action_bar_mobile" 
    android:layout_alignParentRight="true" 
    android:layout_gravity="right" 
    style="@style/ActionBarButtonOffWhite" /> 

color.xml

<resources> 
<color name="action_bar">#ff0d0d0d</color> 
<color name="white">#ffffffff</color> 
<color name="off_white">#99ffffff</color> 
</resources> 

styles.xml

<style name="MyActionButtonStyle" parent="android:Widget.ActionButton"> 
    <item name="android:minWidth">28dip</item> 
</style> 


<style name="ActionBarButton"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:background">@null</item> 
    <item name="android:ellipsize">end</item> 
    <item name="android:singleLine">true</item> 
    <item name="android:textSize">@dimen/text_size_small</item> 
</style> 

지금 당신은 다음에 따라 당신의 자바 파일에 뷰 그룹액션 바을 만들어야합니다

final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate(
      R.layout.actions, 
      null); 

    // Set up your ActionBar 
    final ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayShowHomeEnabled(false); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setDisplayShowCustomEnabled(true); 
    actionBar.setCustomView(actionBarLayout); 


    // You customization 

    final int actionBarColor = getResources().getColor(R.color.action_bar); 
    actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor)); 

    final EditText actionBarEditSearch = (EditText) findViewById(R.id.action_bar_edt_search); 
    actionBarEditSearch.setVisibility(View.GONE); 

    final ImageButton actionBarImgSearch = (ImageButton) findViewById(R.id.action_bar_img_search); 
    actionBarImgSearch.setVisibility(View.GONE); 

    final Button actionBarSearch = (Button) findViewById(R.id.action_bar_search); 
    actionBarSearch.setText("SEARCH"); 

    final Button actionBarPhoto = (Button) findViewById(R.id.action_bar_photo); 
    actionBarPhoto.setText("PHOTO"); 

    final Button actionBarVideo = (Button) findViewById(R.id.action_bar_video); 
    actionBarVideo.setText("VIDEO"); 

    final Button actionBarMobile = (Button) findViewById(R.id.action_bar_mobile); 
    actionBarMobile.setText("MOBILE"); 

    actionBarSearch.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      actionBarEditSearch.setVisibility(View.VISIBLE); 
      actionBarImgSearch.setVisibility(View.VISIBLE); 
      actionBarSearch.setVisibility(View.GONE); 
     } 
    }); 

    actionBarImgSearch.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      actionBarEditSearch.setVisibility(View.GONE); 
      actionBarImgSearch.setVisibility(View.GONE); 
      actionBarSearch.setVisibility(View.VISIBLE); 
     } 
    }); 


<style name="ActionBarButtonWhite" parent="@style/ActionBarButton"> 
    <item name="android:textColor">@color/white</item> 
</style> 

<style name="ActionBarButtonOffWhite" parent="@style/ActionBarButton"> 
    <item name="android:textColor">@color/off_white</item> 
</style> 
+0

사용자 지정 작업 표시 줄이 필요한 경우이 방법이 가장 좋습니다. – DKV

관련 문제