Android:TextView旁边的ImageView没有显示

时间:2017-02-12 02:26:49

标签: android xml relativelayout

我在TextView行中有一个ImageViewListView,彼此相邻。但是,ImageView根本没有显示,也没有注册点击。这是XML代码:

<?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,但位置错误。但我不明白它为什么会引起问题。我错过了什么?

2 个答案:

答案 0 :(得分:1)

问题是TextView正在将ImageView推离屏幕。

您可以使用LinearLayoutandroid: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属性的更多信息:

此属性指定&#34;的重要性&#34;根据它应占据屏幕的空间大小来定义视图。较大的权重值允许它扩展以填充父视图中的任何剩余空间。子视图可以指定权重值,然后视图组中的任何剩余空间将按其声明权重的比例分配给子项。默认权重为零。

例如,如果有三个文本字段,其中两个声明权重为1,而另一个没有权重,则没有权重的第三个文本字段不会增长,只会占用其内容所需的区域。在测量所有三个场之后,另外两个将平均扩展以填充剩余的空间。如果第三个字段的权重为2(而不是0),那么它现在被宣布比其他字段更重要,因此它获得剩余空间总量的一半,而前两个平均分配其余部分。

答案 1 :(得分:0)

你需要使用带有重量的LinearLayout ..如果设置固定宽度并且手机的尺寸很小,它将伸出屏幕。

//执行linearlayout,方向为水平

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

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

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

</LinearLayout>

使用android:layout_weight进行游戏,您将理解