Autore Topic: Visualizzare un certo layout combinato con un altro  (Letto 681 volte)

Offline MasterChief

  • Utente junior
  • **
  • Post: 83
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    OnePlus X
  • Sistema operativo:
    windows 10
Visualizzare un certo layout combinato con un altro
« il: 14 Febbraio 2014, 14:17:13 CET »
0
Ciao ragazzi, ho bisogno di "sistemare" una piccola cosa. Lavorando con AndroidStudio viene creato automaticamente un file chiamato fragment.xml che io ho modificato in questo modo
Codice (XML): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context="com.botom_es_srl.app.Main$PlaceholderFragment">

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textAppearance="?android:attr/textAppearanceMedium"
       android:text="Ora attuale: "
       android:textSize="20sp"
       android:id="@+id/textView"
       android:layout_alignParentBottom="true"
       android:layout_alignParentLeft="true" />

    <DigitalClock
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/digitalClock"
       android:textSize="20sp"
       android:layout_alignBottom="@+id/textView"
       android:layout_toRightOf="@+id/textView" />

</RelativeLayout>

e per gestirlo all'interno dell'activity viene scritto automaticamente questo pezzo di codice
Codice (Java): [Seleziona]
 /**
     * A placeholder fragment containing a simple view.
     */

    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
            return rootView;
        }
    }

Vorrei questo layout venisse "trasferito" a tutti i layout che sono presenti nella mia applicazione, ho già provato a copiare in codice java in ogni activity ma non funziona, ho provato ad associarlo alle altre activity, ma non posso sceglierne più di una. Però ho notato l'attributo del tag RelativeLayout " tools:context="..." " e indica la classe, forse è qui dove si devono indicare le classi in cui visualizzarlo? Se si come si fa? O sono costretto a mettere tutto in ogni activity?

Grazie per l'attenzione  :-)

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Visualizzare un certo layout combinato con un altro
« Risposta #1 il: 14 Febbraio 2014, 15:01:03 CET »
0
Se vuoi riutilizzare lo stesso layout in tutte activity basta che ne crei una e tutte le altre ereditano da quella, lanciando sempre l'onCreate del super.

Codice (Java): [Seleziona]
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myLayout);
}

Se vuoi farlo a livello di Fragment il concetto è analogo. Fai un Fragment e tutti ereditano da quello, lasciando in questo caso il metodo onCreateView.

Codice (Java): [Seleziona]
@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.myLayout, container, false);
            return rootView;
        }

L'attributo tools:context è usato solo dal tuo IDE per renderizzare all'interno di quel layout quell'Activity.
Non ha nessun effetto runtime.

Offline MasterChief

  • Utente junior
  • **
  • Post: 83
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    OnePlus X
  • Sistema operativo:
    windows 10
Re:Visualizzare un certo layout combinato con un altro
« Risposta #2 il: 14 Febbraio 2014, 15:12:57 CET »
0
Grazie per l'aiuto ma io intendevo che vorrei avere un pezzo di display riempito sempre e comunque con il fragment.xml che ho postato prima, e vorrei che cambi solo il layout in base all'activity che si deve mostrare nella restante parte disponibile del display. Intanto provo come mi hai detto  :-)

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Visualizzare un certo layout combinato con un altro
« Risposta #3 il: 14 Febbraio 2014, 15:49:11 CET »
0
Grazie per l'aiuto ma io intendevo che vorrei avere un pezzo di display riempito sempre e comunque con il fragment.xml
Il fragment.xml .... mmm.
L'activity ha un layout.
In questo layout o c'è un fragment inserito direttamente nel layout, oppure ha un frame nel quale dinamicamente vai ad inserire il Fragment via codice.
In entrambi i casi ricadi nei casi precedenti. La super activity pensa a caricare il layout ed eventualmente fare l'innesto dinamico del fragment.

Offline MasterChief

  • Utente junior
  • **
  • Post: 83
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    OnePlus X
  • Sistema operativo:
    windows 10
Re:Visualizzare un certo layout combinato con un altro
« Risposta #4 il: 14 Febbraio 2014, 16:36:19 CET »
0
Grazie mille e scusami se non sono stato chiaro fin da subito. Credo di aver avuto un idea usando il FrameLayout. Pensavo di creare un file xml con un tag <fragment> che avrà tutto ciò che deve essere "fisso" per tutte le altre activity (dato che è un app fullscreen un esempio può essere un DigitalClock e la data corrente) e mettere in ogni layout un FrameLayout (vuoto, ma con le dimensioni desiderate); così via codice java gli passo l'xml creato.
Può essere un idea valida o ho sparato una cavolata cosmica?  :D

Chiedo scusa ancora ma è una cosa che vorrei fare perché potrebbe tornarmi utile in futuro, ma non ho mai gestito layout diversi in un unica schermata  :-)

Offline MasterChief

  • Utente junior
  • **
  • Post: 83
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    OnePlus X
  • Sistema operativo:
    windows 10
Re:Visualizzare un certo layout combinato con un altro
« Risposta #5 il: 16 Febbraio 2014, 15:25:06 CET »
0
Ciao a tutti sono riuscito a risolvere la questione che mi "affliggeva" da qualche giorno ;-) su Google ho trovato dei tag XML particolari; uno si chiama <include> (e dal nome si capisce tutto) e uno <merge> (aggrega, raggruppa) ho trovato la retta via seguendo questi tutorial molto semplici ma che spiegano bene il loro funzionamento, vi lascio i link nel caso tornassero utili a qualcun altro  :-)

http://android-developers.blogspot.it/2009/02/android-layout-tricks-2-reusing-layouts.html
http://android-developers.blogspot.it/2009/03/android-layout-tricks-3-optimize-by.html
http://mfarhan133.wordpress.com/2010/10/01/reusing-layout-include-merge-tag-for-androd/