Размещение кнопки относительно неправильной формы изображения - PullRequest
0 голосов
/ 27 июня 2018

Мне нужно разместить кнопку (зеленая) в месте, показанном на изображении (красная). Оно должно быть одинаковым для всех типов экранов телефонов в портретном режиме.

Это середина экрана, но высота меняется в зависимости от размера экрана. Это свойства кнопки. android:layout_marginBottom не верно для всех размеров экранов.

Кнопка

<ImageView
    android:id="@+id/circle_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="100dp"
    app:srcCompat="@drawable/circle" />

неправильной формы

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:adjustViewBounds="true"
    android:src="@drawable/irregular_shape" />

Требуемый результат

enter image description here

1 Ответ

0 голосов
/ 27 июня 2018

Один из способов решить эту проблему - разделить неправильную фигуру на две фигуры, а затем поместить кнопку между фигурами с помощью ConstraintLayout, что-то вроде этого:

изображение формы

И код будет примерно таким:

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/shape2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/shape_bank_bill_dotted_transparent"
        app:layout_constraintBottom_toTopOf="@+id/shape1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@+id/shape1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <ImageView
        android:id="@+id/shape1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/shape_bank_bill_dotted_transparent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
...