Android RelativeLayout alignCenter из другого представления

Теоретически, вы можете написать всю ОС на Java с помощью Java-процессора . В основном он использует байт-код Java в качестве набора команд для процессора

26
задан Onik 4 December 2018 в 20:55
поделиться

4 ответа

Если вы можете установить ширину родительского макета равным «wrap_content», вы можете поместить оба дочерних макета в центр

.
9
ответ дан 28 November 2019 в 17:29
поделиться

Иногда вы можете установить alignLeft и alignRight на желаемый вид, а затем использовать гравитацию на элементе, который вы хотите центрировать.

Например:

android:layout_below="@+id/firstLayout"
android:layout_alignLeft="@+id/firstLayout"
android:layout_aligntRight="@+id/firstLayout"
android:gravity="center"

Если компонент не является TextView (или видом, где вам не нужен фон), вы можете затем обернуть его в FrameLayout с помощью приведенного выше свойства.

<MyView id="@+id/firstLayout" .. other props/>

<FrameLayout 
    ... other props
    android:layout_below="@+id/firstLayout"
    android:layout_alignLeft="@+id/firstLayout"
    android:layout_aligntRight="@+id/firstLayout"
    android:gravity="center" >

    <MyView id="@+id/myAlignedView" ..other props />

</FrameLayout>

Таким образом, вид снизу будет Frame с той же шириной, что и верхний, но внутри него будет вид с центром в ширину.

Конечно, это работает только тогда, когда вы знаете, какое изображение больше. Если нет, то, как ответил Laranjeiro, оберните оба содержимого в другой макет с центрированной гравитацией.

4
ответ дан 28 November 2019 в 17:29
поделиться

Единственное решение, которое мне помогло, - это обернуть оба компонента в FrameLayout размером более крупного компонента и установить второй компонент в центре FrameLayout, используя свойство

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/red_component"
        android:layout_width="100dp"
        android:layout_height="100dp"/>

    <View
        android:id="@+id/blue_component"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center" />

</FrameLayout>
1
ответ дан 28 November 2019 в 17:29
поделиться

Просто установите так:

<?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">


    <View
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bottomHolder"
        android:layout_alignParentTop="true"
        android:layout_centerInParent = "true"/>

    <View
        android:id="@+id/bottomHolder"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"/>

</RelativeLayout>
-3
ответ дан 28 November 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: