2014-11-20 2 views
1

에 대한 부모의 사용자 정의 레이아웃을 기입하지 액션 바에 아이템이 표시된 탭. 액션 바에 커스텀 레이아웃을 채우지 않습니다. mainactivity의내가 세 가지 레이아웃이 작업 표시 줄

Image of my app

코드 :

선택된 탭 변경 작업 표시 줄에
ActionBar actionbar = getActionBar(); 
actionbar.setDisplayShowTitleEnabled(false); 
actionbar.setDisplayShowHomeEnabled(false); 
actionbar.setDisplayShowCustomEnabled(true); 
View cView = getLayoutInflater().inflate(R.layout.usermanagement_layout, null); 
actionbar.setCustomView(cView); 
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

ImageView i=(ImageView) cView.findViewById(R.id.imageviewadduser); 
i.setOnClickListener(this); 

:

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
// TODO Auto-generated method stub 
final ActionBar actionbar = getActionBar(); 
View cView=null; 
switch (tab.getPosition()) { 
case 0: 
cView = getLayoutInflater().inflate(R.layout.calculate_actionbar_layout, null); 
actionbar.setCustomView(cView); 

//actionbar.setCustomView(R.layout.calculate_actionbar_layout); 

break; 
case 1: 
cView = getLayoutInflater().inflate(R.layout.purchasingmanager_actionbar_layout, null); 
actionbar.setCustomView(cView); 

//actionbar.setCustomView(R.layout.purchasingmanager_actionbar_layout); 
break; 
case 2: 
cView = getLayoutInflater().inflate(R.layout.usermanagement_layout, null); 

actionbar.setCustomView(cView); 

//actionbar.setCustomView(R.layout.usermanagement_layout); 
break; 
default: 
break; 
} 
viewpager.setCurrentItem(tab.getPosition()); 
} 

지정 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" 
android:background="#0d93d2" 
android:weightSum="4" 
android:gravity="center" 
android:layout_gravity="center" 
> 
<ImageView 
android:id="@+id/imageviewusermanagment" 
android:layout_width="0sp" 
android:layout_weight="2.5" 
android:layout_height="wrap_content" 
android:src="@drawable/usermanagment" 
android:scaleType="fitStart" 
android:paddingLeft="20sp" 

/> 
<ImageView 
android:id="@+id/imageviewdeleteuser" 
android:layout_width="0sp" 
android:layout_weight=".5" 
android:layout_height="wrap_content" 
android:src="@drawable/deleteuser" 

/> 



<ImageView 
android:id="@+id/imageviewedituser" 
android:layout_width="0sp" 
android:layout_weight=".5" 
android:layout_height="wrap_content" 
android:src="@drawable/edituser"/> 

<ImageView 
    android:id="@+id/imageviewadduser" 
android:layout_width="0sp" 
android:layout_weight=".5" 
android:layout_height="wrap_content" 
android:src="@drawable/adduser" 
android:onClick="onClick" 
    /> 

</LinearLayout> 

답변

1

변화 onTabSe 이에 대한 내용은 LinearLayout.LayoutParams를 사용자 정의 레이아웃 작업 표시 줄에 정의해야합니다.

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 
    final ActionBar actionbar = getActionBar(); 
    View cView=null; 
    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
      LayoutParams.MATCH_PARENT, 
      LayoutParams.MATCH_PARENT); 
    switch (tab.getPosition()) { 
    case 0: 

     cView = getLayoutInflater().inflate(R.layout.calculate_actionbar_layout, null); 
     cView.setLayoutParams(param); 
     actionbar.setCustomView(cView); 

     //actionbar.setCustomView(R.layout.calculate_actionbar_layout); 

     break; 
    case 1: 

     cView = getLayoutInflater().inflate(R.layout.purchasingmanager_actionbar_layout, null); 
     cView.setLayoutParams(param); 
     actionbar.setCustomView(cView); 

     //actionbar.setCustomView(R.layout.purchasingmanager_actionbar_layout); 
     break; 
    case 2: 
     cView = getLayoutInflater().inflate(R.layout.usermanagement_layout, null); 
     cView.setLayoutParams(param); 
     actionbar.setCustomView(cView); 

     //actionbar.setCustomView(R.layout.usermanagement_layout); 
     break; 
    default: 
     break; 
    } 
    viewpager.setCurrentItem(tab.getPosition()); 
}