sha*_*han 5 xml user-interface android whatsapp
我想实现此功能,如Android中的 WhatsApp 中所示。
\n\n\n\n在这里,为了实现这一点,我对文本和时间使用了单独的TextView ,放置在相对布局内。
\n\n我的问题是,WhatsApp 如何决定何时在换行符中移动时间,何时不移动。
\n\n以下是 WhatsApp 的纵向和横向屏幕截图。
\n\n\n\n\n\n直觉是,代码一定是这样的。
\n\nif(width_of_last_line_of_textview > some_fixed_value)\n move time_textview to new-line;\nelse\n make time_textview in-line;\nRun Code Online (Sandbox Code Playgroud)\n\n但我想知道这是否可以使用 xml 来完成(使用一些属性权重等)
\n\nWhatsApp bubble 会根据每种屏幕尺寸进行自我调整,无论屏幕是横向还是纵向。
\n\n附件是 WhatsApp 用于文本气泡的布局。
\n\nconversation_row_text_right.xml
\n\n<?xml version="1.0" encoding="utf-8"?>\n<merge xmlns:android="http://schemas.android.com/apk/res/android" >\n\n<com.whatsapp.DividerView\n android:id="@id/date_divider"\n style="@style/DateDivider" />\n\n<LinearLayout\n android:id="@id/main_layout"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:layout_alignParentRight="true"\n android:layout_below="@id/date_divider"\n android:layout_marginLeft="40.0dip"\n android:minHeight="30.0dip"\n android:orientation="vertical" >\n\n <FrameLayout\n android:id="@id/web_page_preview_holder"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:paddingBottom="4.0dip"\n android:paddingLeft="8.0dip"\n android:paddingRight="8.0dip"\n android:paddingTop="8.0dip" />\n\n <view\n android:id="@id/text_content_layout"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n class="com.whatsapp.TextAndDateLayout"\n android:paddingBottom="2.0dip"\n android:paddingRight="2.0dip" >\n\n <com.whatsapp.TextEmojiLabel\n android:id="@id/message_text"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:layout_gravity="left"\n android:paddingBottom="3.0dip"\n android:paddingLeft="8.0dip"\n android:paddingRight="8.0dip"\n android:paddingTop="2.0dip"\n android:textColor="#ff000000"\n android:textSize="@dimen/conversation_text_row_tv" />\n\n <LinearLayout\n android:id="@id/date_wrapper"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:layout_gravity="bottom|center|right"\n android:orientation="horizontal"\n android:paddingBottom="1.0dip"\n android:paddingRight="5.0dip" >\n\n <TextView\n android:id="@id/date"\n style="@style/ConversationDate"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:layout_gravity="bottom|center|right"\n android:gravity="right" />\n\n <ImageView\n android:id="@id/status"\n android:layout_width="wrap_content"\n android:layout_height="wrap_content"\n android:layout_gravity="bottom|center|right"\n android:paddingBottom="3.0dip"\n android:paddingLeft="4.0dip" />\n </LinearLayout>\n </view>\n</LinearLayout>\nRun Code Online (Sandbox Code Playgroud)\n\n\n\nWhatsApp 使用LinearLayout来显示日期,它包含 TextView (用于日期,即3:48 PM)和 ImageView (用于图标,即\xe2\x9c\x94)
\n