2017-09-12 3 views
1

Ainsi, la plupart de mes mises en page ont la même structure de base:utiliser une ressource (barre de progression) dans plusieurs mises en page

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    style="@android:style/TextAppearance.DeviceDefault.Medium" 
    xmlns:autofit="http://schemas.android.com/apk/res-auto"> 
    <ProgressBar 
     android:id="@+id/upperLoading" 
     style="?android:attr/progressBarStyle" 
     android:layout_width="35dp" 
     android:layout_height="35dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginTop="20dp" 
     android:elevation="17dp" 
     android:visibility="invisible" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.007" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1" 
     tools:layout_editor_absoluteX="163dp" /> 

    <ProgressBar 
     android:id="@+id/mainLoading" 
     style="?android:attr/progressBarStyle" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginTop="142dp" 
     android:visibility="invisible" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/dashboardScrollView" 
     app:layout_constraintVertical_bias="0.0" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1" /> 

    <ScrollView 
     android:id="@+id/dashboardScrollView" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginEnd="1dp" 
     android:layout_marginLeft="1dp" 
     android:layout_marginRight="1dp" 
     android:layout_marginStart="1dp" 
     android:layout_marginTop="70dp" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1"> 
      //CONTENT 
    </ScrollView> 
</android.support.constraint.ConstraintLayout> 

J'utilise ces ProgressBars en changeant leur visibilité en Java chaque fois que je fais une demande. Comment puis-je définir upperLoading et mainLoading, puis les réutiliser dans plusieurs mises en page? Je suis nouveau à android alors je suis désolé si cette question est trop simple.

+0

si vous souhaitez utiliser cette disposition plusieurs fois. alors il y a un attribut dans xml en utilisant que vous pouvez avoir cette même mise en page dans plusieurs fichiers xml d'activités. – Umair

Répondre

1

J'imagine diverses aproaches pour résoudre votre problème, mais je Croyez mettre votre barre de progression dans un nouveau fichier de mise en page, puis la réutiliser avec la balise est la meilleure et la plus simple.

Comme documentation dit:

intérieur de la mise en page à laquelle vous souhaitez ajouter le composant réutilisable, ajouter la balise.

Ainsi, dans votre cas, je ferais quelque chose comme:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    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"> 

    <include layout="@layout/upperLoading_progressbar_layout"/> 

    <android.support.constraint.ConstraintLayout     
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     style="@android:style/TextAppearance.DeviceDefault.Medium" 
     xmlns:autofit="http://schemas.android.com/apk/res-auto"> 

     ... 

    </android.support.constraint.ConstraintLayout> 
<FrameLayou> 

Et selon cet exemple, vous devez créer un nouveau fichier xml appelé upperLoading_progressbar_layout où vous mettrez vos progrès réutilisables bar.

+1

Merci également à cette solution, mais la solution @RED_ est venue en premier. Merci pour votre temps! – Alphonse