2012-03-06 9 views
2

さて、タブがあるアンドロイドアプリを作っています。今、私の問題はタブウィジェットが異なるアンドロイドバージョンやデバイスで統一されていないことです。 私はまた私のXMLレイアウトを持っている、これは私のタブの活動カスタムTabWidget Androidタブインジケータ

import android.app.TabActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TabHost; 
import android.widget.TabHost.TabSpec; 

public class Cook extends TabActivity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.cook_layout); 

    TabHost tabHost = getTabHost(); 

    // Tab for Snacks 
    TabSpec snackspec = tabHost.newTabSpec("Snacks"); 
    // setting Title and Icon for the Tab 
    snackspec.setIndicator("Snacks", getResources().getDrawable(R.drawable.cook_icon_tab_snacks)); 
    Intent snacksIntent = new Intent(this, Cook_tab_snacks.class); 
    snackspec.setContent(snacksIntent); 



    // Tab for Mains 
    TabSpec mainspec = tabHost.newTabSpec("Mains"); 
    mainspec.setIndicator("Mains", getResources().getDrawable(R.drawable.cook_icon_tab_snacks)); 
    Intent mainsIntent = new Intent(this, Cook_tab_mains.class); 
    mainspec.setContent(mainsIntent); 

    // Tab for Desserts 
    TabSpec dessertspec = tabHost.newTabSpec("Desserts"); 
    dessertspec.setIndicator("Desserts", getResources().getDrawable(R.drawable.cook_icon_tab_snacks)); 
    Intent dessertsIntent = new Intent(this, Cook_tab_desserts.class); 
    dessertspec.setContent(dessertsIntent); 


    // Adding all TabSpec to TabHost 
    tabHost.addTab(snackspec); // Adding snacks tab 
    tabHost.addTab(mainspec); // Adding mains tab 
    tabHost.addTab(dessertspec); // Adding desserts tab 
} 

} 

ある任意のAndroid上で、それは同じことをしたい:

<?xml version="1.0" encoding="UTF-8"?> 

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     /> 
    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:background="@drawable/gradient_bg" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"/> 
</LinearLayout> 

私は似ている新しい指標のXMLを作りましたメインのアンドロイドタブインジケータv4 私はブログの多くを捜して、私は私の答えを見つけることができませんでした... 私は本当にすべてのアンドロイドバージョンで均一なアンドロイドのタブを作り、私のアプリのカラーテーマに本当に合っている お願いします!!!! 私はそれを修正する方法を見つけることができないようです... 乾杯お待ちください

答えて

2

大丈夫私は解決策を見つけました。

import android.app.TabActivity; 
import android.content.Intent; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.LinearLayout.LayoutParams; 
import android.widget.TabHost; 
import android.widget.TabHost.TabSpec; 

public class Cook extends TabActivity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.cook_layout); 

    TabHost tabHost = getTabHost(); 

    // Tab for Snacks 
    TabSpec snackspec = tabHost.newTabSpec("Snacks"); 
    // setting Title and Icon for the Tab 
    snackspec.setIndicator(makeTabIndicator(getResources().getDrawable(R.drawable.cook_icon_tab_snacks))); 
    Intent snacksIntent = new Intent(this, Cook_tab_snacks.class); 
    snackspec.setContent(snacksIntent); 



    // Tab for Mains 
    TabSpec mainspec = tabHost.newTabSpec("Mains"); 
    mainspec.setIndicator(makeTabIndicator(getResources().getDrawable(R.drawable.cook_icon_tab_snacks))); 
    Intent mainsIntent = new Intent(this, Cook_tab_mains.class); 
    mainspec.setContent(mainsIntent); 

    // Tab for Desserts 
    TabSpec dessertspec = tabHost.newTabSpec("Desserts"); 
    dessertspec.setIndicator(makeTabIndicator(getResources().getDrawable(R.drawable.cook_icon_tab_snacks))); 
    Intent dessertsIntent = new Intent(this, Cook_tab_desserts.class); 
    dessertspec.setContent(dessertsIntent); 


    // Adding all TabSpec to TabHost 
    tabHost.addTab(snackspec); // Adding snacks tab 
    tabHost.addTab(mainspec); // Adding mains tab 
    tabHost.addTab(dessertspec); // Adding desserts tab 
} 


//making the tab view: 
private View makeTabIndicator(Drawable drawable){ 
ImageView Tabimage = new ImageView(this); 
LayoutParams LP = new   LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1); 
LP.setMargins(1, 0, 1, 0); 
Tabimage.setLayoutParams(LP); 
Tabimage.setImageDrawable(drawable); 
Tabimage.setBackgroundResource(R.drawable.tabview); 
return Tabimage; 


}} 

私は天候を知らないかではない私は、今私はちょうどすべての作業を、それを取得したい...私はそれを削除するか、後でそれを残すことができるかどうか私はわかりますもうcook_layoutを必要とする:ここ コードですそして、後で私はきれいにして、この質問につまずいてあなたに助けてくれる 希望を閉めるために回りましょう!歓声