在文本视图中使用粗体文本时,我有一个奇怪的行为。
所以问题如下,我创建了一个包含文本的自定义项目,并且应该稍后在列表中用作项目,因此该项目多次包含在具有垂直方向的滚动视图线性布局中。
项目布局如下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonItem">
<TextView
android:id="@+id/m_oItem_TextView_TopLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="20dp"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp"
android:textColor="@color/black"
android:textSize="@dimen/font_size_12" />
<TextView
android:id="@+id/m_oItem_TextView_TopMiddle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/m_oItem_TextView_TopLeft"
android:layout_toRightOf="@+id/m_oItem_TextView_TopLeft"
android:layout_toLeftOf="@+id/m_oItem_TextView_TopRight"
android:layout_marginRight="20dp"
android:textColor="@color/black"
android:textSize="@dimen/font_size_12"
android:gravity="right"/>
<TextView
android:id="@+id/m_oItem_TextView_TopRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="40dp"
android:layout_alignTop="@+id/m_oItem_TextView_TopLeft"
android:textColor="@color/black"
android:textSize="@dimen/font_size_12"/>
<TextView
android:id="@+id/m_oItem_TextView_Bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/m_oItem_TextView_TopLeft"
android:layout_alignRight="@+id/m_oItem_TextView_TopRight"
android:layout_below="@+id/m_oItem_TextView_TopLeft"
android:layout_marginTop="5dp"
android:textColor="@color/black"
android:textSize="@dimen/font_size_14" />
<ImageView
android:id="@+id/m_oItem_PlaceHolder"
android:layout_width="wrap_content"
android:layout_height="10dp"
android:layout_alignLeft="@+id/m_oItem_TextView_TopLeft"
android:layout_alignRight="@+id/m_oItem_TextView_TopRight"
android:layout_below="@+id/m_oItem_TextView_Bottom"
android:contentDescription="@string/image_description"/>
<ImageView
android:id="@+id/m_oPart_Arrow_Image"
android:scaleType="fitCenter"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
android:src="@drawable/arrow_right"
android:contentDescription="@string/image_description"/>
</RelativeLayout>
m_oItem_TextView_Bottom文本视图是包含可能对它来说太长的文本的部分,因此如果需要,可以增加文本视图的高度。当我对此进行测试时,一切正常,并且 textview 具有所需的高度。
但是一旦我设置
android:textStyle="bold"
文本当然会变得更宽,因此可能需要更多行。现在的问题是,这不会被 android 以某种方式计算。
例如,如果非粗体线几乎不需要两行,例如(下图中的最后一项)
粗体文本需要三行,但 textview 仍然只提供两行
有没有人遇到过同样的问题或有解决方案或至少建议我如何解决这个问题。无论如何提前谢谢
编辑:按要求,ButtonItem 样式是这样的
<style name="ButtonItem">
<item name="android:background">@drawable/button_item</item>
</style>
@drawable/button_item 是:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/button_item_down" />
<item android:state_selected="true" android:drawable="@drawable/button_item_selected" />
<item android:drawable="@drawable/button_item_normal" />
</selector>
@drawable/button_item_down 是:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="1dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<stroke
android:width="@dimen/button_item_stroke_thickness"
android:color="@color/black"/>
</shape>
</item>
</layer-list>
@drawable/button_item_selected 是:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="1dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<stroke
android:width="@dimen/button_item_stroke_thickness"
android:color="@color/black"/>
</shape>
</item>
</layer-list>
@drawable/button_item_normal 是:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="1dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle" >
<solid android:color="@color/transparent" />
<stroke
android:width="@dimen/button_item_stroke_thickness"
android:color="@color/black" />
</shape>
</item>
</layer-list>
本质上,它们只是在那里创建项目下方的黑线,并在单击或选择它时使背景变为白色。尽管从未使用 selected on ,因为无论如何都不会在代码中设置选定状态。
我也尝试过没有样式作为背景,但不出所料,问题仍然存在。
再次编辑:好的,所以我能够更多地追踪问题,textview 的大小调整实际上是正确的。具体问题是是否遵循。如果一行的最后一个词(例如“这是一个测试”,而 test 是最后一个词)导致换行,那么最后一个词需要以某种方式足够长。我使用虚拟字符串对此进行了测试,问题中使用了相同的项目。
这里有一些照片
正如您所看到的,导致问题的行需要多一个字符,然后这个词就足够长以适应。
最后编辑:好的找到答案(见下文)