2017-02-12 3 views
0

У меня есть TextView и ImageView в строке ListView, расположенной рядом друг с другом. Тем не менее, ImageView не отображается вообще и не регистрирует клики. Это код XML:Android: ImageView рядом с TextView не отображается

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView" 
     android:text="text" 
     android:layout_width="320dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" 
     android:layout_centerVertical="true" 
     android:padding="10dp" /> 

    <ImageView 
     android:id="@+id/imageView" 
     android:clickable="true" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@id/textView" 
     android:src="@drawable/ic_action"/> 
</RelativeLayout> 

Проблема, кажется, лежит в layout_toRightOf линии, если я удалю его, ImageView показано, но в неправильном месте. Но я не понимаю, почему это вызывает проблему. Что мне не хватает?

+1

Попробуйте использовать Linear Layout с горизонтальной ориентацией – Deepesh

+0

@Technicolor кажется 'андроида: layout_width = "320dp"' слишком много для вашего экрана, почему вам точно нужно 320 дп? –

ответ

1

Вопрос заключается в том, что TextView нажимает на экран ImageView.

Вы можете исправить это с помощью LinearLayout и android:layout_weight

например:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView" 
     android:text="text" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_marginTop="10dp" 
     android:layout_centerVertical="true" 
     android:padding="10dp" /> 

    <ImageView 
     android:id="@+id/imageView" 
     android:clickable="true" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@id/textView" 
     android:src="@drawable/ic_action"/> 
</LinearLayout> 

Более подробную информацию о layout_weight атрибута:

Этот атрибут присваивает «важности» значение зрения в плане сколько места он должен занимать на экране. Большее значение веса позволяет ему расширяться, чтобы заполнить любое оставшееся пространство в родительском представлении. Представления для детей могут указывать значение веса, а затем любое оставшееся пространство в группе просмотра назначается детям в пропорции их объявленного веса. Вес по умолчанию равен нулю.

Например, если есть три текстовых поля, и два из них объявляют вес 1, а другой не имеют веса, третье текстовое поле без веса не будет расти и будет занимать область, требуемую его содержимым , Остальные два будут одинаково расширяться, чтобы заполнить пространство, оставшееся после измерения всех трех полей. Если третьему полю присваивается вес 2 (вместо 0), тогда он объявляется более важным, чем другие, поэтому он получает половину всего оставшегося пространства, в то время как первые два разделяют остальные поровну.

0

Вам необходимо использовать LinearLayout с весом. Если вы установили фиксированную ширину и размер телефона небольшой, он либо растянется на экране.

// сделать LinearLayout с горизонтальной ориентацией

<LinearLayout 
    ... 
    orientation = "horizontal" 
    ... 
> 

    <TextView 
     .... 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     ... 
    /> 

    <Button 
     .... 
     android:layout_width="wrap_content" 
     ... 
    /> 

</LinearLayout> 

Play с android:layout_weight, вы поймете

Смежные вопросы