it-swarm.com.de

Wie man in RelativElayout eine Ansicht über eine andere programmgesteuert in Android stellt?

Ich programmiere programmgesteuert in Android . Das übergeordnete Layout ist RelativLlayout und ich füge zwei Ansichten hinzu. Die erste ist ListView und die zweite ist die benutzerdefinierte Ansicht. Ich möchte, dass meine zweite benutzerdefinierte Ansicht ganz oben auf der Liste steht, aber irgendwie wird sie hinter der ListView versteckt. Wie stelle ich sicher, dass meine benutzerdefinierte Ansicht oben ist?.

30
Chimu

Ansichten werden in der Reihenfolge platziert, in der Sie sie ihren übergeordneten Ansichten hinzufügen. Die zuletzt hinzugefügte Ansicht wird oben angezeigt. Möglicherweise möchten Sie auch Folgendes versuchen: View.bringToFront()http://developer.Android.com/reference/Android/view/View.html#bringToFront ()

31
Megan Scott

Versuchen Sie es mit: View.bringToFront(); 

12
onur taskin

Lösung 1 - View # bringToFront ()View.bringToFront() sollte funktionieren, wenn sie ordnungsgemäß verwendet wird. Vielleicht haben Sie dies vergessen (Quelle: http://developer.Android.com/reference/Android/view/View.html#bringToFront () ):

Vor KitKat sollten auf diese Methode Aufrufe von requestLayout () und invalidate () folgen. 

Lösung 2 - Ansicht erneut anfügen

Wenn View.bringToFront() nicht funktioniert, versuchen Sie, die Ansicht erneut zu entfernen und hinzuzufügen. Der Vorteil ist, dass derselbe Code auch in Versionen vor KitKat enthalten ist.

Ich mache es so in meinem Code:

ViewGroup parentView = (ViewGroup) (listView.getParent());
parentView.removeView(addFab);
parentView.addView(addFab);
6
Amio.io

FrameLayout verwenden, das Frame-Layout zeigt die zuletzt hinzugefügte Ansicht oben.

5
MohsinSyd

Versuche dies : 

   <?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>
5
nikhil.thakkar

Nochmals: Ansichten werden in der Reihenfolge, in der Sie sie hinzufügen, im Layout platziert. Die Frage ist: Ist es wirklich verborgen oder wird es nicht gerendert? Überprüfen Sie LogCat und Console auf Fehler. Wenn Sie Ihrem Layout nur diese einzelne benutzerdefinierte Ansicht hinzufügen, wird sie ohne Probleme gerendert? Wenn ja, stellen Sie sicher, dass Sie Ihren benutzerdefinierten Bereich wirklich derselben übergeordneten Ansicht (Gruppe) hinzufügen, wenn Sie Ihre ListView hinzufügen. Wenn Sie nicht weiter kommen, geben Sie das entsprechende Codebeispiel an.

1
Megan Scott

Bitte versuchen Sie, Android:elevation Attribut zu Ihrer Ansicht in der XML. Es wird immer Ihre benutzerdefinierte Ansicht über der ListView platziert.

0

Ich habe das relative Layout verwendet und die Reihenfolge der Ansichten bestimmt irgendwie, welche davon oben ist.

<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 diesem Layout befindet sich die Textansicht über der Suchleiste

0
code

Erstellen Sie die übergeordnete Ansicht als relatives Layout, und fügen Sie Ihre beiden Ansichten in xml hinzu. Dies funktioniert nicht für lineares Layout . Fügen Sie dann FirstView.bringToFront () programmgesteuert hinzu.

<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();
0
vikrant thakur

Das funktioniert für mich:

<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
Kapil Rajput

sie sollten Android:layout_below oder Android:layout_above programmgesteuert verwenden. also solltest du das tun:

RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.BELOW, R.id.below_id);
viewToLayout.setLayoutParams(params);

und ich schlage vor, Sie schauen Sie sich diese Antwort an

hoffe das hilft

0
pouya