Using newly created MarqueeTextView to ensure contacts' name and addresses will be fully readable even if too long for display

This commit is contained in:
Sylvain Berfini 2019-05-16 10:48:19 +02:00
parent 51f58d1c57
commit 121bafc8aa
39 changed files with 151 additions and 120 deletions

View file

@ -0,0 +1,60 @@
package org.linphone.views;
/*
MarqueeTextView.java
Copyright (C) 2019 Belledonne Communications, Grenoble, France
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.widget.TextView;
import androidx.annotation.Nullable;
/**
* The purpose of this class is to have a Textview automatically configured for marquee ellipsize
*/
@SuppressLint("AppCompatCustomView")
public class MarqueeTextView extends TextView {
public MarqueeTextView(Context context) {
super(context);
init();
}
public MarqueeTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public MarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public MarqueeTextView(
Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
public void init() {
setEllipsize(TextUtils.TruncateAt.MARQUEE);
setMarqueeRepeatLimit(0xffffffff);
setSelected(true);
}
}

View file

@ -78,11 +78,13 @@
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal" />
android:gravity="center_horizontal"
android:maxLines="2"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_address"
style="@style/sip_uri_font"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

View file

@ -46,7 +46,8 @@
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:maxLines="1"
android:singleLine="true"
android:ellipsize="end"
android:padding="15dp" />
<View

View file

@ -46,7 +46,8 @@
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
android:padding="15dp" />
<View

View file

@ -77,9 +77,10 @@
android:layout_height="wrap_content"
android:gravity="center_horizontal" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_address"
style="@style/sip_uri_font"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

View file

@ -46,7 +46,8 @@
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
android:padding="15dp" />
<View

View file

@ -15,7 +15,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical|center"
android:maxLines="1"
android:singleLine="true"
android:text="@string/assistant_choose_country" />
</LinearLayout>

View file

@ -23,7 +23,8 @@
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:maxLines="1"
android:singleLine="true"
android:ellipsize="end"
android:padding="15dp"
android:text="@string/assistant"/>

View file

@ -31,13 +31,13 @@
android:paddingRight="10dp"
android:orientation="vertical">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_name"
style="@style/contact_name_list_cell_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|left"
android:maxLines="1" />
android:singleLine="true"/>
<Chronometer

View file

@ -19,7 +19,8 @@
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical|left"
android:maxLines="1"
android:singleLine="true"
android:ellipsize="end"
android:paddingLeft="20dp"
android:paddingRight="10dp"
android:text="@string/conference" />

View file

@ -17,14 +17,14 @@
</RelativeLayout>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_name"
style="@style/call_contact_name_paused_font"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical|left"
android:maxLines="1"
android:singleLine="true"
android:paddingLeft="20dp"
android:paddingRight="10dp" />

View file

@ -46,7 +46,7 @@
android:gravity="center_vertical|center_horizontal"
android:paddingTop="5dp" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_number"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
@ -54,8 +54,7 @@
android:layout_below="@id/contact_name"
android:layout_centerHorizontal="true"
android:layout_gravity="center_vertical|center_horizontal"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
android:paddingBottom="10dp" />
<RelativeLayout

View file

@ -47,7 +47,7 @@
android:gravity="center_vertical|center_horizontal"
android:paddingTop="5dp" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_number"
style="@style/sip_uri_font"
android:layout_width="wrap_content"
@ -55,8 +55,7 @@
android:layout_below="@id/contact_name"
android:layout_centerHorizontal="true"
android:layout_gravity="center_vertical|center_horizontal"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
android:paddingBottom="10dp" />
<RelativeLayout

View file

@ -34,29 +34,26 @@
android:orientation="vertical"
android:paddingLeft="5dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/subject"
style="@style/toolbar_small_title_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1" />
android:singleLine="true" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/participants"
style="@style/toolbar_small_title_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1" />
android:singleLine="true" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/sipUri"
style="@style/sip_uri_small_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1" />
android:singleLine="true" />
</LinearLayout>

View file

@ -6,7 +6,7 @@
android:background="?attr/backgroundColor2"
android:gravity="center_vertical">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/name"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
@ -15,9 +15,7 @@
android:layout_marginLeft="55dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/security_level"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
<ImageView
android:id="@+id/security_level"

View file

@ -5,7 +5,7 @@
android:layout_margin="5dp"
android:gravity="center_vertical">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/name"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
@ -13,9 +13,7 @@
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
<ImageView
android:id="@+id/security_level"

View file

@ -27,23 +27,19 @@
android:layout_toRightOf="@id/avatar"
android:orientation="vertical">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/name"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/sipUri"
style="@style/sip_uri_small_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true"/>
</LinearLayout>

View file

@ -26,9 +26,9 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.8"
android:ellipsize="marquee"
android:gravity="center"
android:padding="15dp"
android:ellipsize="end"
android:singleLine="true"
android:text="@string/group_chat_room_devices" />

View file

@ -53,23 +53,19 @@
android:layout_toRightOf="@id/avatar"
android:orientation="vertical">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/name"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/sipUri"
style="@style/sip_uri_small_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
</LinearLayout>

View file

@ -33,7 +33,7 @@
android:layout_weight="0.4"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:singleLine="true"
android:text="@string/chat_room_infos_title" />
<ImageView

View file

@ -93,23 +93,19 @@
android:layout_toRightOf="@id/avatar"
android:orientation="vertical">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/name"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/sipUri"
style="@style/sip_uri_small_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
</LinearLayout>

View file

@ -42,7 +42,7 @@
android:layout_height="wrap_content"
android:layout_below="@id/avatar_layout"
android:layout_marginTop="5dp"
android:maxLines="1" />
android:singleLine="true" />
</RelativeLayout>
@ -51,15 +51,13 @@
android:layout_height="match_parent"
android:paddingLeft="10dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/sipUri"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="30dp"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:singleLine="true"
android:scrollHorizontally="true" />
<TextView
@ -73,7 +71,8 @@
android:background="@drawable/unread_message_count_bg"
android:contentDescription="@string/content_description_unread_chat_message"
android:gravity="center"
android:maxLines="1" />
android:singleLine="true"
android:ellipsize="end"/>
<LinearLayout
android:id="@id/lastMessageLayout"

View file

@ -76,16 +76,16 @@
style="@style/big_contact_name_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:maxLines="1" />
android:gravity="center_horizontal"
android:layout_gravity="center" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contactOrganization"
style="@style/contact_organization_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:maxLines="1" />
android:singleLine="true" />
<TableLayout
android:id="@+id/controls"

View file

@ -27,7 +27,8 @@
android:layout_height="35dp"
android:layout_alignParentLeft="true"
android:gravity="center"
android:maxLines="1" />
android:singleLine="true"
android:maxEms="2"/>
<ImageView
android:id="@+id/border"

View file

@ -27,7 +27,8 @@
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:gravity="center"
android:maxLines="1" />
android:singleLine="true"
android:maxEms="2" />
<ImageView
android:id="@+id/border"

View file

@ -27,7 +27,8 @@
android:layout_height="200dp"
android:layout_alignParentLeft="true"
android:gravity="center"
android:maxLines="1" />
android:singleLine="true"
android:maxEms="2" />
<ImageView
android:id="@+id/border"

View file

@ -27,7 +27,8 @@
android:layout_height="35dp"
android:layout_alignParentLeft="true"
android:gravity="center"
android:maxLines="1" />
android:singleLine="true"
android:maxEms="2" />
<ImageView
android:id="@+id/border"

View file

@ -87,23 +87,21 @@
android:layout_toLeftOf="@id/friendLinphone"
android:layout_toRightOf="@id/avatar">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/name"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:ellipsize="end"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contactOrganization"
style="@style/contact_organization_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:maxLines="1" />
android:singleLine="true" />
</RelativeLayout>

View file

@ -84,17 +84,15 @@
android:padding="7dp"
android:src="@drawable/call_status_incoming" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/sip_uri"
style="@style/contact_name_list_cell_font"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/icon"
android:ellipsize="end"
android:gravity="center_vertical"
android:lines="1"
android:maxLines="1" />
android:singleLine="true" />
</RelativeLayout>

View file

@ -77,9 +77,10 @@
android:layout_height="wrap_content"
android:gravity="center_horizontal" />
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/contact_address"
style="@style/sip_uri_font"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

View file

@ -46,7 +46,8 @@
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
android:padding="15dp" />
<View

View file

@ -69,10 +69,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:ellipsize="end"
android:lines="1"
android:maxLines="1">
android:layout_alignParentTop="true">
<TextView
android:id="@+id/record_name"
@ -99,9 +96,6 @@
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:orientation="horizontal">
<TextView

View file

@ -29,7 +29,8 @@
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:maxLines="1"
android:singleLine="true"
android:ellipsize="end"
android:padding="15dp"
android:text="@string/menu_recordings"/>

View file

@ -15,18 +15,16 @@
android:paddingTop="15dp"
android:paddingBottom="15dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_title"
android:singleLine="true"
android:ellipsize="marquee"
style="@style/settings_item_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_subtitle"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_below="@id/setting_title"
style="@style/settings_item_subtitle_font"
android:layout_width="match_parent"

View file

@ -15,20 +15,18 @@
android:paddingTop="15dp"
android:paddingBottom="15dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_title"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toLeftOf="@id/setting_checkbox"
android:paddingRight="5dp"
style="@style/settings_item_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_subtitle"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toLeftOf="@id/setting_checkbox"
android:paddingRight="5dp"
android:layout_below="@id/setting_title"

View file

@ -15,20 +15,18 @@
android:paddingTop="15dp"
android:paddingBottom="15dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_title"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toLeftOf="@id/setting_led"
android:paddingRight="5dp"
style="@style/settings_item_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_subtitle"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toLeftOf="@id/setting_led"
android:paddingRight="5dp"
android:layout_below="@id/setting_title"

View file

@ -15,18 +15,16 @@
android:paddingTop="15dp"
android:paddingBottom="15dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_title"
android:singleLine="true"
android:ellipsize="marquee"
style="@style/settings_item_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_subtitle"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_below="@id/setting_title"
style="@style/settings_item_subtitle_font"
android:layout_width="match_parent"

View file

@ -15,20 +15,18 @@
android:paddingTop="15dp"
android:paddingBottom="15dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_title"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toLeftOf="@id/setting_switch"
android:paddingRight="5dp"
style="@style/settings_item_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_subtitle"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toLeftOf="@id/setting_switch"
android:paddingRight="5dp"
android:layout_below="@id/setting_title"

View file

@ -15,18 +15,16 @@
android:paddingTop="15dp"
android:paddingBottom="15dp">
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_title"
android:singleLine="true"
android:ellipsize="marquee"
style="@style/settings_item_font"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
<org.linphone.views.MarqueeTextView
android:id="@+id/setting_subtitle"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_below="@id/setting_title"
style="@style/settings_item_subtitle_font"
android:layout_width="match_parent"