我在TextView
行中有一个ImageView
和ListView
,彼此相邻。但是,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
,但位置错误。但我不明白它为什么会引起问题。我错过了什么?
答案 0 :(得分: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
属性的更多信息:
此属性指定&#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
进行游戏,您将理解