#android #xml #android-layout
#Android #xml #android-макет
Вопрос:
У меня есть один Framelayout внутри, в котором у меня есть Linealayout, весовая сумма которого 5.1 внутри, у нас есть 5 макетов, я хочу отрегулировать горизонтальный разрыв, каждый из которых основан на некотором соотношении (27:51:48:48:48:24) слева направо так, чтобы это было так, но не фиксировалось. как это исправить?
я пробовал с layout_weight 1,.9,.9,.8,1
, но это не фиксирует это соотношение, а пользовательский интерфейс не фиксирует мое соотношение горизонтального разрыва.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/bb_bottom_bar_outer_container"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/float_common"
android:clickable="true">
<LinearLayout
android:id="@ id/btn_updatenow"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="horizontal"
android:weightSum="5.1">
<RelativeLayout
android:id="@ id/float_layout_home"
android:layout_width="@dimen/dp0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:orientation="vertical"
android:paddingTop="2dp">
<ImageView
android:id="@ id/float_image_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_6"
android:background="@drawable/float_home__new_click" />
<TextView
android:id="@ id/float_text_home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/padding_7"
android:letterSpacing="-0.05"
android:text="@string/home"
android:textColor="@color/text_mid_grey" />
</RelativeLayout>
<RelativeLayout
android:id="@ id/float_layout_collect"
android:layout_width="@dimen/dp0"
android:layout_height="match_parent"
android:layout_weight=".9"
android:background="?attr/selectableItemBackground"
android:orientation="vertical"
android:paddingTop="2dp">
<ImageView
android:id="@ id/float_image_collect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_6"
android:background="@drawable/float_collect_new_click" />
<TextView
android:id="@ id/float_text_collect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/padding_7"
android:letterSpacing="-0.05"
android:text="@string/collect_tab_title"
android:textColor="@color/text_mid_grey" />
</RelativeLayout>
<RelativeLayout
android:id="@ id/float_layout_offers"
android:layout_width="@dimen/dp0"
android:layout_height="match_parent"
android:layout_weight=".9"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="2dp">
<ImageView
android:id="@ id/float_offers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_6"
android:background="@drawable/float_offercoupons_new_click" />
<TextView
android:id="@ id/txt_badge"
style="@style/Typeface.Footnote.White"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_gravity="top|right"
android:layout_marginLeft="-5dp"
android:layout_marginTop="3dp"
android:layout_toRightOf="@ id/float_offers"
android:background="@drawable/badge_background"
android:gravity="center"
android:visibility="gone" />
<TextView
android:id="@ id/float_text_offers"
style="@style/Typeface.Small.TextMidGrey"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/padding_7"
android:gravity="center"
android:letterSpacing="-0.05"
/>
</RelativeLayout>
<RelativeLayout
android:id="@ id/float_layout_voucher"
android:layout_width="@dimen/dp0"
android:layout_height="match_parent"
android:layout_weight=".8"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="2dp"
android:visibility="visible">
<ImageView
android:id="@ id/float_voucher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_6"
android:background="@drawable/float_myimage_new_click" />
<TextView
android:id="@ id/float_text_voucher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/padding_7"
android:letterSpacing="-0.05"
android:text="@string/vouchers"
android:textColor="@color/text_mid_grey" />
</RelativeLayout>
<RelativeLayout
android:id="@ id/float_layout_boost"
android:layout_width="@dimen/dp0"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="2dp"
android:visibility="visible">
<ImageView
android:id="@ id/float_boost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/margin_6"
android:background="@drawable/float_image2_new_click" />
<TextView
android:id="@ id/float_text_boost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="@dimen/padding_7"
android:letterSpacing="-0.05"
android:text="@string/boost"
android:textColor="@color/text_mid_grey" />
</RelativeLayout>
</LinearLayout>
</FrameLayout>
Я хочу сохранить горизонтальное соотношение, чтобы мой пользовательский интерфейс выглядел как на экране ниже
Комментарии:
1. атрибут «android: weightSum» используется для установки общего веса. итак, если вы укажете это в родительском линейном макете, то веса его дочернего представления должны суммироваться с предоставленной weightSum.
2. да, я пытался с тем же, но не смог получить результат, как я показываю вам на прилагаемом снимке экрана, не могли бы вы предложить?
3. здесь общий вес вашего дочернего представления равен 4,6, а вы указали значение weightSum равным 5,1. вот почему ваш вид не соответствует ожидаемому.
4. итак, если я применю 4.6, тогда это сработает?
5. если вы установите его как 4.6, то ваш вид будет соответствовать полной ширине.
Ответ №1:
У вас проблема с вашим весом, но вы столкнетесь с другой проблемой: вы говорите, что ваш относительный макет принимает вес за ширину, но внутри вы помещаете содержимое wrap в свой элемент.
Это пример, если ваша общая ширина равна 1000dp, и вы присваиваете вес элементу внутри вашего контейнера, допустим, ширина вашего элемента равна 100dp с рассчитанным весом, но ваше изображение занимает 120dp с wrap_content, вы видели проблемы?
Позвольте мне показать вам это небольшое решение, которое я написал
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="246">
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="27" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text1" />
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="51" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text2" />
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="48" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text3" />
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="48" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text4" />
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="48" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text5" />
</LinearLayout>
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="24" />
</LinearLayout>
В этом коде вес зависит только от пробела между элементами точно так же, как ваш рисунок, каждый элемент между пробелами может переносить его содержимое
Комментарии:
1. Спасибо за ответ, позвольте мне проверить.
2. используя этот код, я не могу видеть изображение и текст. @Vodet
3. Вы добавили android: текст и изображение src для ImageView?
4. Я добавил android: background =»@drawable / float_home__new_click» ни текст, ни изображение не отображаются вверху, я использую макет рамки @Vodet
5. Для вашего изображения вам нужно указать свою высоту и ширину вместо wrap_content