Проблема с TabActivity для Android UI

Я пытаюсь реализовать следующий фон для приложения … Введите описание изображения здесь

Для фонового изображения (фонового приложения) … Я устанавливаю изображение в setContentView (макет) … добавив эту строку, я получаю исключение во время выполнения …

Если я установил этот фон в subactivities .. я не получаю фон, чтобы заполнить полный фон приложения .. любая идея, в чем альтернатива?

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 } 

}

Для этого вы должны использовать пользовательские вкладки, вот пример кода:

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

Где prepareTabView – метод, который надувает вид. Затем наложите вид следующим образом:

  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> 

Затем добавьте свой задний цвет, как вам нравится.

TabActivity устарела с Android 4.2, уровень API 17. Используйте фрагменты вместо TabActivity