テキストビューで太字のテキストを使用すると、奇妙な動作をします。
問題は次のとおりです。テキストを保持し、後でリストのアイテムとして使用されることになっているカスタムアイテムを作成したため、アイテムは垂直方向のスクロールビューリニアレイアウトに複数回含まれています。
アイテムのレイアウトは次のとおりです
<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は、長すぎる可能性のあるテキストを含む部分であるため、必要に応じてtextviewの高さを増やします。これをテストしたところ、すべてが正しく機能しており、テキストビューには必要な高さがありました。
しかし、一度設定すると
android:textStyle="bold"
もちろん、テキストは幅が広くなるため、より多くの行が必要になる場合があります。今の問題は、これがどういうわけかアンドロイドによって説明されないということです。
たとえば、太字ではない行に次のような2行がほとんど必要ない場合(下の画像の最後の項目)
太字のテキストには3行が必要ですが、textviewには2行しか表示されません
誰かが同じ問題に遭遇したり、解決策や少なくとも私が問題を解決する方法を提案したりしたことがありますか?とにかく事前に感謝します
編集:要求に応じて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>
基本的には、アイテムの下に黒い線を作成し、クリックまたは選択した場合に背景を白にするためにあります。ただし、選択された状態がコードで設定されることはないため、選択されたオンは使用されません。
スタイルも背景にせずに試してみましたが、さすがに問題はありませんでした。
もう一度編集:さて、問題をもう少し追跡することができました。テキストビューのサイズ変更は実際には正しいです。具体的な問題は、次の場合です。行の最後の単語(たとえば、テストが最後の単語であるのに「これはテストです」)が改行を引き起こす場合、最後の単語は何らかの形で十分な長さである必要があります。質問で使用したのと同じ項目で、ダミーの文字列を使用してこれをテストします。
ここにいくつかの写真があります
ご覧のとおり、問題の原因となっている行にはもう1文字必要ですが、その単語は十分な長さです。
最後の編集:答えが見つかりました(以下を参照)