Mi amigo y yo estamos haciendo una aplicación de android para nuestro proyecto de la clase. Estamos haciendo y de la aplicación de fichas. Queremos saber si hay una manera de utilizar un archivo xml para las pestañas y si podemos agregar imágenes directamente desde el código java o necesitamos hacer un archivo xml para cada pestaña individual. Si lo hacemos, ¿cómo podemos mantener el mismo formato para todas las pestañas.

El código que proporcionamos es la main.xml en el que hemos adjuntado algunas fotos para. el tab.xml es el xml de diseño que nos formato de las fichas. el SalesExecutiveDashboard.java es la actividad principal que llama a la ficha otras actividades. Por último HomeTab.java es un ejemplo de en nuestra pestaña de códigos.

Gracias por toda la ayuda proporcionada

main.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
 android:layout_height="fill_parent"
 android:layout_width="fill_parent"
 android:orientation="vertical"
 xmlns:android="http://schemas.android.com/apk/res/android">
<TextView 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content"
 android:layout_margin="1dp" 
 android:text="@string/overall_sales"
 android:id="@+id/pieChartView"/>
<ImageView 
 android:layout_height="fill_parent"
 android:layout_width="fill_parent" 
 android:id="@+id/pie_chart" 
 android:src="@drawable/piechartsmall"/>
</LinearLayout>

tab.xml

<?xml version="1.0" encoding="UTF-8"?>
<TabHost
 android:id="@android:id/tabhost" 
 xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_height="fill_parent" 
 android:layout_width="fill_parent"> 

<ScrollView 
 xmlns:android="http://schemas.android.com/apk/res/android"    
 android:layout_height="fill_parent"
 android:layout_width="fill_parent">

<LinearLayout android:id="@+id/LinearLayout01"
 android:layout_height="wrap_content" 
 android:layout_width="fill_parent" 
 android:orientation="vertical">

<HorizontalScrollView 
 android:layout_height="wrap_content"
 android:layout_width="wrap_content" 
 android:scrollbars="none"
 android:fillViewport="true">

<TabWidget android:id="@android:id/tabs"
 android:layout_height="40dp" 
 android:layout_width="wrap_content"
 android:layout_gravity="bottom"
 android:gravity="bottom">

</TabWidget>
</HorizontalScrollView>

<FrameLayout
 android:id="@android:id/tabcontent"
 android:layout_height="fill_parent"
 android:layout_width="fill_parent">
</FrameLayout>
</LinearLayout>
</ScrollView>
</TabHost>

SaleExecutiveDashboard.java

package com.androidpeople.tab;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
public class SalesExecutiveDashboard extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab);
/* TabHost will have Tabs */
//TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
TabHost tabHost=getTabHost();
/* TabSpec used to create a new tab. 
* By using TabSpec only we can able to setContent to the tab.
* By using TabSpec setIndicator() we can set name to tab. */
/* tid1 is firstTabSpec Id. Its used to access outside. */
TabSpec HomeTabSpec = tabHost.newTabSpec("Tab1");
TabSpec RevExpTabSpec = tabHost.newTabSpec("Tab2");
TabSpec AccountTabSpec = tabHost.newTabSpec("Tab3");
TabSpec DistroTabSpec = tabHost.newTabSpec("Tab4");
TabSpec SBPTabSpec = tabHost.newTabSpec("Tab5");
TabSpec AlertTabSpec = tabHost.newTabSpec("Tab6");
/* TabSpec setIndicator() is used to set name for the tab. */
/* TabSpec setContent() is used to set content for a particular tab. */
HomeTabSpec.setIndicator("  Home  ").setContent(new Intent(this,HomeTab.class));
RevExpTabSpec.setIndicator("  Rev/Exp  ").setContent(new Intent(this,RevExpTab.class));
AccountTabSpec.setIndicator("  Accounts  ").setContent(new Intent(this,AccountsTab.class));
DistroTabSpec.setIndicator("  Distribution  ").setContent(new Intent(this,DistroTab.class));
SBPTabSpec.setIndicator("  Sales by Product  ").setContent(new Intent(this,SBPTab.class));
AlertTabSpec.setIndicator("  Alerts  ").setContent(new Intent(this,AlertTab.class));
/* Add tabSpec to the TabHost to display. */
tabHost.addTab(HomeTabSpec);
tabHost.addTab(RevExpTabSpec);
tabHost.addTab(AccountTabSpec);
tabHost.addTab(DistroTabSpec);
tabHost.addTab(SBPTabSpec);
tabHost.addTab(AlertTabSpec);
}
}

HomeTab.java

package com.androidpeople.tab;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.widget.ImageView;
public class HomeTab extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* First Tab Content */
ImageView image = (ImageView) findViewById(R.id.pie_chart);
//TextView textView = new TextView(this);
//textView.setText("This is the Home Tab");
//setContentView(textView);
setContentView(R.layout.main);
}
}
InformationsquelleAutor zingwing | 2012-11-20

2 Comentarios

  1. 1

    Sí, usted puede utilizar una distribución de recursos en múltiples ocasiones. Sólo se especifica la apariencia. En cuanto a las imágenes, siempre y cuando estén en su dibujable recursos, sólo se puede asignar a su ImageView como usted desea.

    //hold the integer resource id of your image
    Integer img = R.drawable.<<imageid>>;
    //get your ImageView
    ImageView iView = (ImageView) findViewById(R.id.<<viewname>>);
    //assign your image
    iView.setImageResource(img);

    Otra opción es en la imagen en el directorio, puede crear xml ‘seleccionadoras de decirle a su aplicación la imagen que se utilizará depende de alguna condición. Por ejemplo, digamos que usted tiene un ImageButton y quieres una imagen diferente para mostrar si está desactivada. Usted puede tener un selector como el siguiente en el dibujable directorio para el uso de las imágenes en su dibujable-h/l/mdpi directorios:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/aps/res/android">
    <item android:state_enabled="false" android:drawable="@drawable/<<disabledImage>>"/>
    <item android:drawable="@drawable/<<defaultImage>>"?>
    </selector>

    Entonces, usted puede utilizar este selector en su diseño.

    <Button android:layout_width="fill_parent" android:id="@+id/btn1" android:text="btn1" android:textSize="20dp" android:textColor="@android:color/transparent" android:background="@drawable/<<selectorName>>" android:layout_height="fill_parent" android:onClick="<<clickevent>>" />

    Sé que esto es una vieja pregunta, pero espero que esto ayude a alguien.

  2. 0

    Primer lugar usted necesita para editar el HomeTab Actividad método onCreate como :

    JS:

     @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    /* First Tab Content */
    ImageView image = (ImageView) findViewById(R.id.pie_chart);
    //TextView textView = new TextView(this);
    //textView.setText("This is the Home Tab");
    //setContentView(textView);
    }

    Podemos lanzar ninguna de control después de establecer el archivo de diseño que no te de fundición de primera 🙂

    A continuación, después de que su MainActivity contenido TabHost así se puede establecer inBuild Listner como :

    JS:

    tabHost.setOnTabChangedListener(new OnTabChangeListener() {
    @Override
    public void onTabChanged(String arg0) {     
    int pos=tabHost.getCurrentTab();  Toast.makeText(this,""+pos,Toast.LENGTH_SHORT).show();
    SharedPreferences pref=getSharedPreferences(YOUR_PREFERENC,0);
    SharedPreferences.Editor et = pref.edit();
    et.putInt(YOUR_POS_KEY,pos);
    et.commit();
    }       
    });

    puede utilizar este SharedPreferences valor en el sub Actividad y comprobar la posición de la condición de conjunto dinámico de la imagen en su diseño o en un solo archivo Java

    espero que funcione

    Feliz Codificación …

Dejar respuesta

Please enter your comment!
Please enter your name here