我不确定是“最后一行”的问题,但我们有一个应用程序,其中有一个TextView,宽度为fill_parent,高度为wrap_content。文本从Java代码中动态放置在其中。即使布局中有足够的空间,文本的最后一行也没有显示出来。它在相当深的视图层次结构中,因此我的猜测是那里的测量逻辑被搞乱了,但这非常令人沮丧。我们需要猜测文本中将有多少行,并相应地设置'android:lines'才能使其正常工作。
有人见过这种情况吗?在代码中,向下看到id 'contentTextView'。如果我去掉'android:lines',文本的最后一行会消失。
基类调用此方法以获得实际文本。
无论如何,我将其简化。我去掉了一些部分以查看剩下的部分,但仍然遇到了同样的问题。我认为我可能已经找到了引发问题的因素和解决方案,但不是“原因”。
有人见过这种情况吗?在代码中,向下看到id 'contentTextView'。如果我去掉'android:lines',文本的最后一行会消失。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/flag"
>
<include android:id="@+id/incHeader" layout="@layout/header"/>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ImageView
android:layout_width="fill_parent"
android:layout_height="101dp"
android:background="@drawable/headershadow"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:layout_weight="1"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="101dp"
android:background="@drawable/footershadow"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/gybcontentback"
android:layout_gravity="center_horizontal"
android:orientation="vertical">
<include android:id="@+id/gybHeaderInclude" layout="@layout/gybcontentheader"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#4f4f4f"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:lines="9"
android:id="@+id/contentTextView"/>
<ImageView
android:layout_marginTop="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/button_blue_rascal_button"
android:id="@+id/buttonMoreInfo"/>
</LinearLayout>
</FrameLayout>
<include android:id="@+id/incFooter" layout="@layout/menu"/>
</LinearLayout>
Java 代码。我在 onCreate 方法中使用普通的 Java 字符串填充 TextView。
@Override
protected String body()
{
return "Rascal Flatts and The Jason Foundation, Inc. are working together to prevent suicide.\n\n" +
"Your Battle Buddy (or family member) may need a friend.\n\n" +
"Take the pledge to B1.";
}
基类调用此方法以获得实际文本。
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(contentView());
wireMenu();
TextView headerText = (TextView) findViewById(R.id.gybHeaderText);
if(headerText != null)
headerText.setText(header());
((TextView) findViewById(R.id.contentTextView)).setText(body()); // This is where the text is set
}
无论如何,我将其简化。我去掉了一些部分以查看剩下的部分,但仍然遇到了同样的问题。我认为我可能已经找到了引发问题的因素和解决方案,但不是“原因”。