2013-05-20 9 views
27

Sto creando la visualizzazione a livello di codice in Android. Il layout principale è relativo e sto aggiungendo due viste. La prima è la visualizzazione elenco e la seconda è la visualizzazione personalizzata. Voglio che la mia seconda vista personalizzata venga in cima alla lista, ma in qualche modo si sta nascondendo dietro la vista elenco. Come faccio ad assicurarmi che la mia vista personalizzata sia in primo piano.Come mettere una visualizzazione su un'altra in Layout relativo programmaticamente in Android?

+1

prega postyour codice –

risposta

11

Prova d'uso: View.bringToFront();

+0

sua non funziona, non so il motivo per cui – Chimu

+0

Grazie .. il suo lavoro per me .. :) – ADT

4

Usa FrameLayout, il layout fotogramma mostra ultima vista aggiunto in cima ..

+1

Non voglio usare FrameLayout, ISN ci sono comunque per farlo in Relative Layout? – Chimu

4

Prova questa:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ListView 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

    <YourCustomView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" /> 

</RelativeLayout> 
+1

Per qualche motivo, voglio usare solo il layout relativo, non è comunque in grado di gestire l'ordine z dei bambini del layout relativo – Chimu

1

Anche in questo caso: Visualizzazioni vengono messi alla disposizione secondo l'ordine si aggiunge. La domanda è: è davvero nascosta o non rende? Controllare LogCat e Console per errori. Se si aggiunge questa singola vista personalizzata al proprio layout, viene visualizzato senza problemi? In tal caso, assicurati di aggiungere la tua personalizzazione alla stessa visualizzazione genitore (gruppo), mentre aggiungi il tuo ListView. Se non si ottiene ulteriormente, fornire un campione di codice rispettivo.

6

Soluzione 1 - View # BringToFront() View.bringToFront() dovrebbe funzionare se usato correttamente. Forse hai dimenticato questo (fonte: http://developer.android.com/reference/android/view/View.html#bringToFront()):

Prima di KITKAT questo metodo deve essere seguito da chiamate a requestLayout() e invalidare()

Soluzione 2 - ricollegare vista

Se View.bringToFront() non funziona, provare a rimuovere e aggiungere nuovamente la vista. Il vantaggio è che ha lo stesso codice anche nelle versioni pre-KITKAT.

sto facendo in questo modo nel mio codice:

ViewGroup parentView = (ViewGroup) (listView.getParent()); 
parentView.removeView(addFab); 
parentView.addView(addFab); 
0

Questo funziona per me:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="220dp" 
android:gravity="bottom" 
android:orientation="vertical" 
android:theme="@style/ThemeOverlay.AppCompat.Dark"> 

<ImageView 
    android:id="@+id/details_wrapper" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:paddingBottom="16dip" 
    android:scaleType="centerCrop" 
    android:src="@drawable/temp_nav_image"> 
</ImageView> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="Kapil Rajput" 
     android:textStyle="bold" 
     android:textColor="@android:color/black" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1"/> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="@android:color/black" 
     android:textStyle="bold" 
     android:text="[email protected]"/> 
</LinearLayout> 
</RelativeLayout> 
0

ho usato il layout relativo e l'ordine dei punti di vista in qualche modo determina che uno è in cima .

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1"> 
    <SeekBar 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:splitTrack="false" 
     android:layout_alignParentTop="true" 
    /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true"/> 

In questo layout, il TextView sarà in cima alla SeekBar

0

Fai vista padre come il layout relativo e aggiungere il sia vista in xml.It non funzionerà per il layout lineare. E quindi aggiungere FirstView.bringToFront() in modo programmato.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@mipmap/bg" 
android:orientation="vertical" 
android:padding="15dp"> 


<ImageView 
    android:id="@+id/imgIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_gravity="center" 
    android:layout_marginBottom="-30dp" 
    android:layout_marginTop="30dp" 
    android:src="@mipmap/login_logo" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@id/imgIcon" 
    android:layout_gravity="bottom" 

    android:background="#B3FFFFFF" 
    android:gravity="center" 
    android:orientation="vertical" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp"> 

<View 1/> 
<View 2/> 
</LinearLayout> 

Java file 
imgIcon.brigtToFront(); 
Problemi correlati