2012-04-03 6 views
6

Así que Android hace todo lo posible para crear esta guía de interfaz de usuario para que todos la utilicen. Pero no veo ningún lugar donde muestre ejemplos de código sobre cómo construir estos elementos.Android: Cómo crear pestañas como las que se muestran en la interfaz de usuario de Android Página

Las pautas de la interfaz de usuario para pestañas se pueden encontrar aquí. http://developer.android.com/design/building-blocks/tabs.html.

¿Alguien sabe cómo crear pestañas como este? enter image description here

Cualquier ayuda sería apreciada, gracias.

SOLUCIÓN PUBLICADA
Ok, así que esto es lo que terminé haciendo después de probablemente perder unas 10 horas tratando de hacer algunas pestañas buenas.
enter image description here

Primero descarté la idea de utilizar la implementación de pestañas de android. Por una razón, se supone que el widget de host de pestañas está obsoleto para la barra de acciones, pero la barra de acciones solo funciona desde android 3 en adelante.

Finalmente descubrí que si usaba un diseño lineal y como fondo para el diseño lineal ponía la imagen que quería usar (usando una imagen de 9 parches). Luego, cree otra distribución lineal y vista de texto para colocar el texto encima de esa distribución lineal. Luego haga clic en su diseño lineal. Luego, a medida que avanzas, puedes hacer que tu fondo de diseño lineal sea un selector xml y estarás listo para continuar. En caso de que no hayas conseguido todo eso aquí está mi código.

LinearLayout

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:background="@color/main_screen_bg_color" 
    android:orientation="horizontal" 
    android:padding="2dp" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:background="@drawable/selector_not_current" 
     android:clickable="true" 
     android:onClick="onClickSub" 
     android:orientation="horizontal" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:singleLine="true" 
       android:text="Example 1" 
       android:textColor="@color/black" 
       android:textSize="18sp" 
       android:textStyle="bold" /> 
     </LinearLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:background="@drawable/selector_current" 
     android:clickable="true" 
     android:onClick="onClickFoodDetails" 
     android:orientation="horizontal" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:singleLine="true" 
       android:text="Example 2" 
       android:textColor="@color/black" 
       android:textSize="18sp" 
       android:textStyle="bold" /> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

Ejemplo Selector

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" 
     android:drawable="@drawable/selected_pressed_tab" /> <!-- pressed --> 
<item android:state_focused="true" 
     android:drawable="@drawable/selected_pressed_tab" /> <!-- focused --> 
<item android:drawable="@drawable/selected_tab" /> <!-- default --> 

Espero que esto ayude a todos. Las pestañas de Android eran demasiado difíciles y molestas para trabajar, era más fácil hacer las mías desde cero. ¡Buena suerte!

+1

yo sepa, es el aspecto por defecto de Android ICS usando el tema Holo. – Ghost

Respuesta

5

haga algo como esto.

este es un código de trabajo completo.disfrutar

en algún lugar en el método OnCreate de la actividad que se extiende Tabactivity

tabHost = getTabHost(); 
    Intent intent; 
    intent = new Intent().setClass(this, FirstActvity.class); 
    setupTab("NearBy", intent, R.drawable.firsttabdrawable); 
    intent = new Intent().setClass(this, SecondActivity.class); 
    setupTab("History", intent, R.drawable.secondtabdrawable); 
    intent = new Intent().setClass(this, ThirdActivity.class); 
    setupTab("Setting", intent, R.drawable.thirdtabdrawable); 

definir métodos setupTab como

private void setupTab(String tag, Intent intent, int selectorId) { 
    View tabView = LayoutInflater.from(tabHost.getContext()).inflate(R.layout.view, null); 
    tabView.setBackgroundResource(selectorId); 
    TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabView).setContent(intent); 
    tabHost.addTab(setContent); 
    } 

view.xml como

<?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" 
> 
</LinearLayout> 

y firsttabdrawable.xml en la carpeta estirable como

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- When selected, use grey --> 
    <item android:drawable="@drawable/selectedfirsttabimage" 
     android:state_selected="true" /> 
    <!-- When not selected, use white--> 
    <item android:drawable="@drawable/notselectedfirsttabimage" /> 
</selector> 

definen secondtabdrawable.xml y thirddrawable.xml de la misma manera

+0

solo solicite a su diseñador que corte 6 imágenes para las pestañas anteriores – Javanator

+0

Esto parece estar funcionando, casi lo tengo configurado correctamente. ¿Qué proporción usas cuando diseñas tus propios íconos de pestañas? ¿Qué píxel x pixel usas? Desde la captura de pantalla obtuve 120pixels X 48pixels. ¿Es eso correcto? –

2

Las pestañas que necesita son parte de la barra de acciones. Específicamente, se muestran cuando la barra de acciones está en modo de pestaña de navegación.

http://developer.android.com/guide/topics/ui/actionbar.html (véase el apartado "Adición de navegación aquí")

Es posible que desee utilizar www.ActionbarSherlock.com que es una biblioteca que le dará la Barra de acciones en casi todas las versiones de Android. Funciona igual que el oficial, e incluye las pestañas.

No use TabActivity más, es viejo y está en desuso. ActionBar es el futuro.

Cuestiones relacionadas