У меня есть две аналогичные проблемы: оба связаны с ImageView
, нажимая TextView
(-ы) вокруг, и я не могу понять, почему. Для списка карточек я ищу, чтобы изображение соответствовало его родительскому значению, а ширина масштабируется соответствующим образом, а текст выравнивается по левому краю справа от изображения. Для всплывающего окна установите ширину в родительскую и масштабную высоту с текстом ниже.Избегайте Android вытаскивать элементы вне экрана в макете?
Текущий card_layout.xml
:
<?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="120dp" >
<android.support.v7.widget.CardView
android:id="@+id/card_view"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_height="120dp"
card_view:cardCornerRadius="4dp"
card_view:elevation="14dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:scaleType="fitStart"
android:padding="4dp"
android:layout_gravity="left"
android:layout_weight="1">
</ImageView>
<TextView
android:id="@+id/location"
android:textSize="16dip"
android:layout_toRightOf ="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="top" >
</TextView>
<TextView
android:id="@+id/abbreviation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/location"
android:layout_toRightOf="@+id/image"
android:layout_toEndOf="@+id/image">
</TextView>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
Текущий location_info_card.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/info_image"
android:layout_height="0dp"
android:layout_width="match_parent"
android:scaleType="fitStart"
android:padding="10dp"
android:layout_weight="1">
</ImageView>
<TextView
android:id="@+id/info_abbreviation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="4dp">
</TextView>
<TextView
android:id="@+id/info_location"
android:textSize="16sp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="4dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
Я испробовал несколько решений из учебников, а также сообщений SO с однократными и вложенными макетами, но пока ничего не работает. Это только то, что у меня есть сейчас.
- Решение?
- Почему текст подталкивается к нижней части LinearLayout, а не появляется прямо под ним? Или почему он отталкивается от экрана в
RelativeLayout
при использованииwrap_content
наImageView
иlayout_toRightOf
наTextView
?
Относительно # 2, из-за ответов на подобные вопросы о SO, только отправляя решение, специфичное для этой проблемы, без каких-либо объяснений, я не могу применить его к моей ситуации. Я ищу ресурс, чтобы понять, как взаимодействуют макеты и представления (одиночные и вложенные), если объяснение будет слишком длинным для ответа.
Вы должны использовать вложенный макет и использовать атрибуты веса :) – HelloSadness
Для всплывающего окна попробуйте удалить 'layout_weight' в' ImageView' и установить его 'layout_height'' wrap_content'. – clownba0t
Что касается карты, я пробовал свой макет на местном уровне, и это сработало для меня. Просто чтобы подтвердить, ясно видны ли текстовые представления, используя цвет шрифта, отличный от белого, и имеющий текст, который они должны отображать, правильно установленным программным путем? – clownba0t