私はlistViewを持っています。行の1つのコンポーネントはTextViewです。デフォルトでは、TextView に 2 行のテキストのみを表示したいと考えています。しかし、ユーザーが TextView をタップすると、textView をコンテキストで展開したいと考えました。
私は実際にこの部分を機能させていますが、より多くのコンテンツインジケーターが必要です:
私の現在の実装(以下)には、リストビューがスクロールされた場合に折りたたまれないという独自の問題がありますが、各カーソルレコードの値をコレクションに保存することでそれを処理します..
chatBubble.getLineCount() を使用してみましたが、最初はゼロを返します b/c (私の理解では) onLayout を通過していません。
2行以上のコンテンツがある場合にのみ表示したい.
私のソリューションは、私の要件の一部を処理できる TextView の独自の実装を作成することになると思いますが、誰かが私が見ることができる例を持っているかどうかはわかりません.. (または他の提案)。
<RelativeLayout
android:id="@+id/linear_layout_row_three"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linear_layout_row_two"
android:layout_toRightOf="@+id/munzeeQuickContact"
android:orientation="horizontal" >
<TextView
android:id="@+id/chat_bubble"
android:clickable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="2"
android:background="@drawable/chat_bubble"
android:text="I went looking for this particular token on a rainy day, and I was unable to locate it due to the bad weather, next time please leave an um I went looking for this particular munzee on a rainy day, and I was unable to locate it due to the bad weather, next time please leave an um" />
<ImageView
android:id="@+id/minimize_maximize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/chat_bubble"
android:layout_alignRight="@id/chat_bubble"
android:visibility="gone"
android:src="@android:drawable/ic_menu_more"/>
</RelativeLayout>
ここに私が現在持っているソースのいくつかがあります:
final TextView chatBubble = (TextView) view.getTag(R.id.chat_bubble);
final ViewGroup expandableContainer = (ViewGroup) view.getTag(R.id.linear_layout_row_three);
final ImageView minimizeMaximize = (ImageView) view.getTag(R.id.minimize_maximize);
chatBubble.setOnClickListener(
new View.OnClickListener() {
boolean isExpanded = false;
int lastHeight = 0;
// This is for the auto expanding text view
@Override
public void onClick(View v) {
if (isExpanded) {
ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) expandableContainer
.getLayoutParams();
params.height = lastHeight;
chatBubble.setMaxLines(2);
expandableContainer.setLayoutParams(params);
expandableContainer.invalidate();
minimizeMaximize.setVisibility(View.VISIBLE);
} else {
lastHeight = expandableContainer.getHeight();
ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) expandableContainer
.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
chatBubble.setMaxLines(99);
expandableContainer.setLayoutParams(params);
expandableContainer.invalidate();
minimizeMaximize.setVisibility(View.VISIBLE);
}
isExpanded = !isExpanded;
}
});