Это оказалось сложным вопросом для меня. После нескольких часов борьбы я не мог получить решение ни с помощью LinearLayout
, ни RelativeLayout
, ни ConstraintLayout
. Я также с нетерпением жду, чтобы увидеть решение с помощью одного из упомянутых макетов (или любого другого).
Между тем, если вам не хватает времени, я бы предложил вариант, который скорее обходной путь, чем решение , А именно, вы можете рассмотреть возможность использования атрибутов drawableStart
и drawableEnd
для AppCompatTextView
, поэтому итоговый макет будет выглядеть следующим образом:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/title_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:drawableStart="@mipmap/ic_modify"
android:drawableEnd="@mipmap/ic_modify"
android:text="TEST TEST TEST TEST TEST TEST TEST TEST"
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true" />
</RelativeLayout>
Обратите внимание, что для тестирования я использовал @mipmap/ic_launcher
, поставляемый с проект по умолчанию Android Studio . ic_launcher
s имеют квадратный размер для каждой группы разрешений экрана. Возможно, вам придется сделать то же самое с ic_modify
, чтобы предотвратить растяжение по ширине.
Другим вариантом, если это применимо, может быть создание собственного представления.