Я пытаюсь создать макет со встроенным фрагментом карты Google и некоторой информацией о выбранных маркерах под картой.Я хочу, чтобы информация под картой занимала только необходимое пространство и оставляла остальное пространство для карты.
Насколько я понимаю, layout_weight
назначает дополнительное пространство различным виджетам.пропорционально приведенному значению.Поэтому, если у меня есть виджет с layout_weight = 1
и другой виджет с layout_weight = 0
, первый виджет займет все лишнее пространство, а второй займет только то, что ему нужно.Так что если я дам второй виджет layout_height = wrap_content
, то я должен получить то, что хочу.Однако на практике это не так.Я изменил много значений, и либо один из виджетов занимает все пространство, либо ни один не занимает.Единственный способ заставить их нормально отображаться - это установить layout_height
второго виджета на определенное значение.
Это может быть частью проблемы, но я заполняю виджетыmap_frag_event_icon
, map_frag_person
и map_frag_event_details
динамически.
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="@dimen/fragment_margins"
android:orientation="vertical">
<fragment
xmlns:tools="http://schemas.android.com/tools"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/map_frag_google_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingBottom="@dimen/fragment_margins"
tools:context=".fragment.MapFragment"/>
<LinearLayout
android:id="@+id/map_frag_event_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/map_frag_event_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/icon_padding"
android:layout_weight="0" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/map_frag_event_person"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size"/>
<TextView
android:id="@+id/map_frag_event_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
strings.xml
<resources>
<string name="app_name">Family Map</string>
<string name="title_activity_maps">Map</string>
<dimen name="fragment_margins">8dp</dimen>
<dimen name="horizontal_layout_padding">8dp</dimen>
<dimen name="vertical_layout_padding">4dp</dimen>
<dimen name="icon_size">48sp</dimen>
<dimen name="icon_padding">8dp</dimen>
<dimen name="text_size">20sp</dimen>
<dimen name="small_text_size">14sp</dimen>
<dimen name="large_text_size">24sp</dimen>
<dimen name="map_event_layout_height">120sp</dimen>
<dimen name="map_event_icon_size">40sp</dimen>
</resources>
РЕДАКТИРОВАТЬ
Вот общий дизайн, который я ищу, но я хочу, чтобы белое пространство с текстом было как можно меньшеи я хочу создать параметр для изменения размера текста, поэтому нижний пробел должен быть динамическим.
Пожалуйста, объясните, что происходит вместе с решением, если можете.