2015-03-26 4 views
1

Я пытаюсь поместить небольшой ImageView поверх кнопки, но так или иначе он остается под ним. Я не понимаю, почему, поскольку такой макет отлично работает с другими представлениями.ImageView сверху кнопки

<RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <Button 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@color/background_white_clickable" 
       android:text="@string/book_now" 
       android:id="@+id/but_book_now" 
       /> 

      <ImageView 
       android:layout_width="35dp" 
       android:layout_height="35dp" 
       android:id="@+id/img_bookmark" 
       android:src="@drawable/ic_action_bookmark_full" 
       android:layout_marginRight="15dp" 
       android:layout_marginEnd="15dp" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentEnd="true" /> 

     </RelativeLayout> 

Я пробовал использовать другой фон для кнопки, но изображение можно увидеть только тогда, когда оно прозрачно. Я также попытался заменить ImageView цветным представлением, но не работает.

Любая идея? Thx

EDIT:

Существует путаница в ответах я получаю, я имею в виду, чтобы сделать ImageView в верхней части кнопки в ее Z-порядка, а не оси у.

EDIT 2:

Я не хочу использовать изображение кнопки, изображение просто «шпилька» на кнопке, которая появится/исчезнет. Я не хочу использовать выталкиваемую кнопку, мне нужно разместить ее там, где я хочу. Использование FrameLayout вместо RelativeLayout ничего не меняет. Использование imgView.bringToFront() не работает.

EDIT 3:

Проблема не отображается на устройстве перед леденец. На KitKat макет работает по назначению.

+0

вам нужно разместить изображение на верхней части кнопки? – Shadow

+1

Вы пробовали ImageButton? http://developer.android.com/reference/android/widget/ImageButton.html – Soham

+0

Если вы хотите изображение на кнопке, ImageButton может быть лучшей идеей. Во всяком случае, в относительном расположении z порядок выполняется по порядку представлений в файле. Поэтому, если изображение определено вторым, оно должно нарисовать поверх кнопки. Возможно, мы с трудом понимаем, что вы хотите, картины того, что у вас есть, и хотите, было бы хорошей идеей. –

ответ

0

Попробуйте

findViewById(R.id.img_bookmark).bringToFront(); 
+0

Не работает ... У меня была надежда, хотя – Gyome

+0

wird. Попробуйте 'findViewById (R.id.img_bookmark) .invalidate();' после 'bringToFront()', если это не поможет также привести к недействительности RelativeLayout. –

-3

пожалуйста, добавьте layout_below атрибута Button

+0

Не могли бы вы добавить более подробную информацию о решении, которое вы предоставляете? – abarisone

0

Вам необходимо установить кнопку ниже ImageView так:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/background_white_clickable" 
     android:text="@string/book_now      
     android:id="@+id/but_book_now" 
     android:layout_below="@+id/img_bookmark"/> 

    <ImageView 
     android:layout_width="35dp" 
     android:layout_height="35dp" 
     android:id="@+id/img_bookmark" 
     android:src="@drawable/ic_action_bookmark_full" 
     android:layout_marginRight="15dp" 
     android:layout_marginEnd="15dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 
</RelativeLayout> 

EDIT

Я заметил теперь, когда вам нужно изображение O N TOP кнопки не ВЫШЕ, поэтому не все равно на мой код выше и использовать ImageButton:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <ImageButton 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/background_white_clickable" 
     android:text="@string/book_now      
     android:id="@+id/but_book_now" 
     android:src="@drawable/ic_action_bookmark_full"/> 
</RelativeLayout> 
0

Пример кода:

<RelativeLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <ImageView 
      android:id="@+id/img_bookmark" 
      android:layout_width="35dp" 
      android:layout_height="35dp" 
      android:layout_alignParentRight="true" 
      android:src="@drawable/ic_launcher" /> 

     <Button 
      android:id="@+id/but_book_now" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/img_bookmark" 
      android:text="Test" /> 
    </RelativeLayout> 

Примечание:

Редактировать текст и ЦСИ , для ваших нужд

2
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginTop="80dp" > 
<Button 
    android:id="@+id/filter" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="7dp" 
    android:background="#0000FF" 
    android:gravity="center" 
    android:paddingBottom="25dp" 
    android:paddingTop="25dp" 
    android:text="Sort" 
    android:textColor="#FFFFFF" /> 

<ImageView 
android:id="@+id/widget_title_icon" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="top|right" 
android:adjustViewBounds="true" 
android:paddingTop="-10dp" 
android:scaleType="fitStart" 
android:src="@drawable/ic_launcher" /> 

    </FrameLayout> 

Попробуйте, хотя я его не тестировал.

0

Если вы хотите вид изображения с помощью кнопки:

<Button 
     android:id="@+id/but_book_now" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:drawableTop="@drawable/ic_launcher" 
     android:background="#ff00ff" 
     android:text="This is button" 
     android:padding="10dp" 
     android:textColor="#ffff00" 
     /> 

</RelativeLayout> 

enter image description here

Если вы хотите вид изображения без кнопки:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/but_book_now" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_launcher" 
     android:text="This is button" 
     android:padding="10dp" 
     android:textColor="#ffff00" 
     /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#ff00ff" 
     android:text="This is button" 
     android:padding="10dp" 
     android:textColor="#ffff00" 
     /> 

</LinearLayout> 

enter image description here

0

Вы можете определить RelativeLayout как кнопку и добавить на него ClickEvents, добавить дочерний вид с цветом или дочерним ImageView с PNG или любым другим или обоими, чтобы поместить изображения или цвет поверх него.

Пример

  <FrameLayout android:id="@+id/buttonTextFillColor" 
       android:layout_width="@dimen/mini_icon_width" 
       android:layout_height="@dimen/mini_icon_height" 
       android:background="@drawable/input_button_background" 
       android:clickable="true"> 
       <View 
        android:id="@+id/colorTextFillColor" 
        android:layout_width="23dp" 
        android:layout_height="23dp" 
        android:background="#FFFFFF" 
        android:layout_gravity="center" /> 
       <ImageView 
        android:layout_width="23dp" 
        android:layout_height="23dp" 
        android:src="@drawable/button_fill_text" 
        android:layout_gravity="center"/> 
      </FrameLayout> 

Вы получаете объединение элементов:

How will you see it?