2017-01-02 3 views
0

У меня есть квадрат ImageButton, определенный в xml, исходное изображение которого может меняться программно. Независимо от того, что изображение внутри Я хочу, чтобы отображал маленький серый треугольник в правом нижнем углу (цель - предложить пользователю щелкнуть по изображению и выбрать другой значок из списка). Вот пример, который я нашел на Зефир:Как поставить треугольный серый угол на ImageButton?

enter image description here

Как это сделать?

+3

Вы можете использовать блесну с заказным макетом вместо ImageButton, https://developer.android.com/guide/topics/ui/controls/spinner. html? hl = es-419 – AndroidRuntimeException

+0

@ AgustinSivoplás благодарит за ваш ответ. Если я не ошибаюсь, используя «Spinner», мне придется использовать раскрывающееся меню! Поэтому я бы предпочел использовать «ImageButton», поскольку я мог бы определить его поведение по своему усмотрению. – Robb1

+0

используйте 'LayerDrawable' – pskink

ответ

0

Вы можете сделать что-то вроде этого

  <RelativeLayout 
        android:id="@+id/image_holder" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_gravity="center" 
        android:gravity="center" 
        android:visibility="visible"> 

        <ImageView 
         android:id="@+id/chosenThing" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_centerInParent="true" 
         android:layout_gravity="center" 
         android:adjustViewBounds="true" 
         android:contentDescription="@string/chosen_image" 
         android:scaleType="centerInside"/> 


        <ImageView 
         android:id="@+id/corner" 
         style="@style/Base.Widget.AppCompat.Button.Borderless" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_alignBottom="@id/chosenThing" 
         android:layout_alignLeft="@id/chosenThing" 
         android:layout_alignRight="@id/chosenThing" 
         android:layout_centerHorizontal="true" 
         android:clickable="true" 
         android:padding="8dp" 
         android:src="@drawable/ic_corner" 
         android:tint="@color/white" 
         android:gravity="bottom|right" /> 
       </RelativeLayout> 
+0

Спасибо за ответ! Где вы получили '@ drawable/ic_corner'? Не следует ли использовать «FrameLayout» вместо «RelativeLayout», если целью является совмещение двух «ImageViews»? – Robb1

+0

@ Robb1 Нет, вам нужно использовать 'RelativeLayout' из-за атрибутов' layout_align..', что позволит растянуть второе изображение относительно первого изображения. '@ drawable/ic_corner' - просто изображение для вашего угла. Нарисуйте его в краске или сделайте как XML (если это возможно). – Ekalips

Смежные вопросы