2011-04-06 3 views
3

내가 응용 프로그램에 대한 다음과 같은 배경을 구현하기 위해 노력하고 ... 배경 이미지 (응용 프로그램 배경) ... 내가 된 setContentView (레이아웃)에서 이미지를 설정하고 들어 enter image description here안드로이드 UI TabActivity 문제

.. .이 줄을 추가하여 런타임 예외가 발생했습니다 ...

서브 액티비티에서이 배경을 설정하면 .. 전체 응용 프로그램 배경을 채우는 배경을 얻지 못할 것입니다 .. 어떤 아이디어가 대안이됩니까?

public class HMITabActivity extends TabActivity{ 
private TabHost tabHost = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.background); 
    tabHost = getTabHost(); 
    tabHost.setOnTabChangedListener(new OnTabChangeListener() { 
     @Override 
     public void onTabChanged(String tabId) { 
      setTabHostColors(); 
     } 
    }); 
    tabHost.addTab(tabHost.newTabSpec("Tasks") 
      .setIndicator("Tasks", getResources().getDrawable(R.drawable.icon_task)) 
      .setContent(new Intent(this, Tasks.class))); 
    tabHost.addTab(tabHost.newTabSpec("HMI") 
      .setIndicator("HMI", getResources().getDrawable(R.drawable.icon_hmi)) 
      .setContent(new Intent(this, HMI.class))); 
    tabHost.addTab(tabHost.newTabSpec("Diagnostics") 
      .setIndicator("Diagnostics", getResources().getDrawable(R.drawable.icon_diagnostics)) 
      .setContent(new Intent(this, Diagnostics.class))); 
    tabHost.addTab(tabHost.newTabSpec("About") 
      .setIndicator("About", getResources().getDrawable(R.drawable.icon_info)) 
      .setContent(new Intent(this, Tasks.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))); 

    Intent intent = new Intent(BackgroundService.class.getName()); 
    startService(intent); 
} 

private void setTabHostColors() { 
    for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { 
     tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.rgb(1, 1, 1)); //unselected 
    } 
    tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.rgb(50, 120, 160)); // selected 
} 

} 당신이 사용자 정의 탭을 사용해야합니다이를 위해

+0

나만의 맞춤 탭을 만드는 것이 좋습니다. 그렇게하면 모든 장치에서 동일하게 보일 것입니다. 안드로이드 탭이 다른 장치에서 항상 동일하게 보이지는 않습니다. – binnyb

+0

오 ... 맞습니까? 나는 그것을 인식하지 못했습니다 ... 감사합니다 ... –

답변

14

, 여기에 코드가 이것을 시도이다 prepareTabView이 방법 팽창보기는

tabHost= getTabHost(); 
    tabHost.addTab(tabHost.newTabSpec("tab1").setContent(new Intent(this, Activity2.class)).setIndicator(prepareTabView("Names",R.drawable.icon))); 

.

private View prepareTabView(String text, int resId) { 
     View view = LayoutInflater.from(this).inflate(R.layout.tabs, null); 
     ImageView iv = (ImageView) view.findViewById(R.id.TabImageView); 
     TextView tv = (TextView) view.findViewById(R.id.TabTextView); 
     iv.setImageResource(resId); 
     tv.setText(text); 
     return view; 
    } 

탭 XML은 다음과 같이 표시됩니다 : 은 다음과 같은보기를 부풀려

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:id="@+id/TabLayout" 
android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:padding="5dip"> 

<ImageView android:id="@+id/TabImageView" android:src="@drawable/icon"   
android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

<TextView android:id="@+id/TabTextView" android:text="Text" 
android:paddingTop="5dip" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:textColor="@color/black" 
android:textAppearance="@style/TabTextViewStyle" /> 

</LinearLayout> 
당신이 원하는대로

그리고 지금 backgroung에 색상을 추가 ..

+0

고맙습니다 .... 이것은 더 융통성이 있습니다 .. –

+0

그걸 듣고 잘 ... – Venky

+0

좋은 하나 ...하지만 내가 원하는 색상을 변경하려면 기성품 탭 텍스트 색상 –

0

TabActivity는 안드로이드에서 사용되지 않습니다 4.2, API 수준 17. TabActivity 대신 Fragments을 사용하십시오.