Android:为什么我的第二个TextView不显示,而第一个显示?

时间:2013-12-18 15:56:08

标签: java android

我添加了第二个TextView,它应该在第一个TextView之下,但现在第一个TextView正在运行,但第二个<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:padding="6dip" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/state1" android:textSize="16sp" /> <TextView android:id="@+id/secondLine" android:layout_width="fill_parent" android:layout_height="26dip" android:layout_below="@id/textView1" android:ellipsize="marquee" android:singleLine="true" android:text="@string/sayer1" android:textSize="12sp" /> <TextView android:id="@+id/thirdLine" android:layout_below="@+id/textView2" android:text="@string/state2" android:textSize="16sp" /> <TextView android:id="@+id/textView2" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="@string/sayer2" android:textSize="16sp" /> </RelativeLayout> 没有显示。

这是我的代码:

{{1}}

4 个答案:

答案 0 :(得分:1)

可能是您的顶部RelativeLayout的高度设置为?android:attr/listPreferredItemHeight,并且第一个文本视图高度设置为包装内容。根据第一个文本视图的高度,可能只是布局不够高,无法显示两者

将您的最高RelativeLayout更改为使用wrap_content

的高度
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="6dip" >

查看这两个文本视图:

<TextView
android:id="@+id/thirdLine"
android:layout_below="@+id/textView2" 
android:text="@string/state2"
android:textSize="16sp" />

<TextView
android:id="@+id/textView2"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" 
android:text="@string/sayer2"
android:textSize="16sp" />

这不会起作用,因为你将第二个放在layout_alignParentBottom="true"的底部,然后你试图在它下面放一些东西。但它与底部对齐,所以下方没有空间!

将这两个底部文本视图更改为以下内容可能会执行您想要的操作:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:text="@string/sayer2"
android:textSize="16sp" />

<TextView
android:id="@+id/thirdLine"
android:text="@string/state2"
android:textSize="16sp" />

</LinearLayout>

答案 1 :(得分:1)

你需要三件事才能让别人出现。

首先:

将此属性android:layout_height="?android:attr/listPreferredItemHeight"更改为android:width="match_parent"

第二

将宽度/高度设置为TextView s。 thirdLine textView2 没有合适的宽度/高度。尝试做到这一点:

android:layout_width="match_parent"
android:layout_height="wrap_content"  

最后:

请勿尝试将TextView置于另一个alignParentBottom下方,其对齐方式为<?xml version="1.0" encoding="utf-8"?> // set a height to wrap_content/match_parent/fill_parent <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="6dip" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="state1" android:textSize="16sp" /> <TextView android:id="@+id/secondLine" android:layout_width="fill_parent" android:layout_height="26dip" android:layout_below="@id/textView1" android:ellipsize="end" android:singleLine="true" android:lines="1" android:text="sayer1" android:textSize="12sp" /> // if you want to align the latter text // to the bottom, make a container as... <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > // declare the width/height of the TextView <TextView android:id="@+id/textView2" android:layout_width="fill_parent" android:layout_height="26dip" android:text="sayer2" android:textSize="16sp" /> <TextView android:id="@+id/thirdLine" android:layout_width="fill_parent" android:layout_height="26dip" android:layout_below="@+id/textView2" android:text="state2" android:textSize="16sp" /> </RelativeLayout> </RelativeLayout> 。而不是这样,尝试添加一个容器,其对齐位于全局父级的底部。见下文:

尝试以下格式:

{{1}}

让我知道这是否是预期的结果。希望这会有所帮助。

答案 2 :(得分:0)

注意:我被告知这个答案是错误的,但它确实突出了布局模拟器解析器中的一个问题。有鉴于此,我将把这个答案留下来记录这个缺陷。


您在下面的布局中偶然添加了@+id/TextView2

android:layout_below="@+id/textView2"

请尝试使用此参考具体ID,并且您需要添加大小调整参数

<TextView
  android:id="@+id/thirdLine"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_below="@id/textView2" 
  android:text="@string/state2"
  android:textSize="16sp" />

这仅适用于我的Android布局模拟器中的这些更改,但您可能需要将定义textView2移到其引用的位置之上。

这是在我的布局构建器中工作的文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip" >

<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="asdf"
android:textSize="16sp" />

<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_below="@id/textView1"
android:ellipsize="marquee"
android:singleLine="true"
android:text="fdsa"
android:textSize="12sp" />


<TextView
android:id="@+id/thirdLine"
android:layout_below="@id/textView2" 
android:text="asdffdsa"
android:textSize="16sp" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" 
android:text="string/sayer2"
android:textSize="16sp" />

</RelativeLayout>

答案 3 :(得分:0)

我不认为你的布局工作正常,你应该在 @ id / textView2 上找到“没有找到资源...”因为你试图在中引用它p>

android:layout_below="@id/textView2"

在“thirdLine”TextView 之前中,您已将 textView2 添加到relativelayout中。

订单应该是这样的:

<TextView
android:id="@+id/textView1"" />

<TextView
android:id="@+id/secondLine"
android:layout_below="@id/textView1" />

<TextView
android:id="@+id/textView2"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" " />

<TextView
android:id="@+id/thirdLine"
android:layout_below="@+id/textView2" />

请记住,当你有RelativeLayout时,你添加你的观点的顺序并不重要,你可以告诉他们在哪里定位自己。

必须总是会发生,但如果您引用某个视图,那么它必须 引用它的视图。哇这令人困惑。

让我们说A想要低于B.然后在你的RelativeLayout中,B必须在A之前来。

现在已经解释了。在您的 textView2 中,您告诉它将自己与其父级对齐,以便它转到底部左侧。当然,您不能在 textView2 下面 thirdLine ,因为 textView2 左下角中对齐。请尝试改为:

<TextView
android:id="@+id/thirdLine"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true" />

<TextView
android:id="@+id/textView2"
android:layout_above="@+id/thirdLine" />

此外,IDE是否告诉您说明“layout_width”和“layout_height”?对于TextViews。如果这对你没有任何帮助,请你画一张你需要的小图片,以便我们更好地指导你?

我还建议将父视图(Your RelativeLayout)的高度和宽度说明为“fill_parent”(API 7及以下)或“match_parent”(API 8及更高版本)。

对于我要去的其他观点

android:layout_width="match_parent" or "fill_parent"
android:layout_height="wrap_content"

但是您也可以将宽度设置为“wrap_content”,更适合您的UI。