2015-12-30 10 views
12

Mam XML układ:Jak wyświetlić obraz z przodu karty? Kiedy oba są względnego Childs Układ

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/containor" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#fff6da" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity"> 

     <FrameLayout 
      android:id="@+id/card" 
      android:layout_width="220dp" 
      android:layout_marginTop="10dp" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:background="@color/white" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:padding="10dp" 
       android:text="Hello I am a text View." /> 

     </FrameLayout> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="210dp" 
     android:background="@drawable/select_delete_chim" /> 

</RelativeLayout> 

które działa prawidłowo. Rezultatem będzie rzutem obrazek powyżej układ ramki, ale kiedy użyć następującego kodu xml, w którym mam zastąpić układ ramki z CardView:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/containor" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#fff6da" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity"> 

     <android.support.v7.widget.CardView 
      android:id="@+id/card" 
      android:layout_width="220dp" 
      android:layout_marginTop="10dp" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:background="@color/white" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:padding="10dp" 
       android:text="Hello I am a text View." /> 

     </android.support.v7.widget.CardView> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="210dp" 
     android:background="@drawable/select_delete_chim" /> 
</RelativeLayout> 

wtedy wynik będzie: ImageView z tyłu CardView.

Każde rozwiązanie tego?

Jeszcze jedno, będzie działać dobrze na urządzeniach pre-Lollipop, ale na Lollipop nie działa.

Output with CardView on pre-lollipop devices (required output)

Output with CardView on lollipop devices

Odpowiedz

34

CardView ma domyślną wysokość, która jest większa niż ImageView, więc musimy dodać większą wysokość w ImageView niż wysokość elewacji CardView.

np. imageView.setElevation(10); i cardView.setElevation(5);

Teraz działa dobrze na wszystkich urządzeniach.

+3

Możesz również zrobić powyższe w swoim xml w następujący sposób: android: elevation = "10dp" dla ImageView i card_view: cardElevation = "5dp" dla CardView. – ProgDevCode

+1

to działa tylko lollipop i powyżej –

+0

dzięki @Vatish Sharma, pracował dla mnie również –

1

Zapis widok obrazek powyżej cardview, mam nadzieję, że to rozwiąże problemu

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/containor" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#fff6da" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.vats.vatishs.cardviewprogrammatically.MainActivity"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="210dp" 
     android:src="@drawable/select_delete_chim" /> 

     <android.support.v7.widget.CardView 
      android:id="@+id/card" 
      android:layout_width="220dp" 
      android:layout_marginTop="10dp" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:background="@color/white" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:padding="10dp" 
       android:text="Hello I am a text View." /> 

     </android.support.v7.widget.CardView> 

    </RelativeLayout> 
+0

Nie, to nie działa. Nawet mój pierwszy układ arkusza xml, tj. Nie powiedzie się, jeśli zmienię pozycję widoku obrazu w xml –

+0

, a także użyję src zamiast tła – Madhur

+0

Nie ma to wpływu na działanie. –

3

napisania tego wiersza w kodzie java po uruchomieniu ImageView.

imageView.bringToFront();

+0

Próbowałem, ale nie działa. –

+0

Wpisz kod java. –

+0

nic specjalnego w kodzie, istnieje tylko metoda onCreate(), w której nazwałem setContentView() –

1

Zrób to tak,

<android.support.v7.widget.CardView 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myCardView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    card_view:cardBackgroundColor="@android:color/transparent" 
    card_view:cardElevation="0dp"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_edit" 
      android:background="@android:color/transparent"/> 

</android.support.v7.widget.CardView> 

To przyniesie ImageView do przodu.

+0

Dodaj wysokość jako "0dp". – priyanka

+0

Nie chcę, aby obraz stanie się dzieckiem cardView, ponieważ imageView jest ikoną krzyża, którą muszę wyświetlać w rogu widoku cardview w taki sposób, że pojawia się 1/4 w cardView i spoczywa poza cardView. –

+0

edytował ans. Obrazek może być w osobnym widoku kart z przezroczystym tłem. I możesz umieścić go w dowolnym miejscu. – priyanka

Powiązane problemy