Intereting Posts
Не удалось связаться с поставщиком услуг: в Twitter нет сертификатов peer Android ant build: отладка и выпуск целей Как включить кеширование expires-header для веб-просмотра Подписывать ящик навигации в наблюдаемый Как запустить ffmpeg из командной строки в android Facebook SDK импортировать в Android Studio и добавить его в мое приложение Как импортировать проект библиотеки eclipse из проекта github в android studio? Как создать файл на Sdcard с помощью телефонной заставки Как наложить цвет текста элемента списка в определенном регионе? Почему мои изображения сжимаются после загрузки с помощью библиотеки скольжения Каков правильный способ установки приложения Android при использовании параметров аромата? Android Получить текущую дату (со временем 0: 00: 000) в миллисекундах? Виртуальные сообщения Google – CCS (XMPP) против HTTP-сервера Android: EditText и Button; Когда нажимаете кнопку, не фокусируете EditText и скрываете мягкую клавиатуру? Android IndexOutOfBoundsException ошибка для просмотра списка фильтров поиска

Android: возможность рисования рядом с TextView с весом для каждого TextView в LinearLayout

Я пытаюсь достичь результата, как показано на рис. 1. Пробовал настройку силы тяжести, paddingleft и т. Д., Но выталкиваемое изображение попадает в правый конец, а не рядом с текстом (показано на рис. 2 Введите описание изображения здесь ). Может ли кто-нибудь предложить, как выровнять изображение рядом с TextView? Также как установить размер drawable?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/separator" android:padding="10dp"> <TextView android:id="@+id/sms" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="2dp" android:layout_marginRight="2dp" android:layout_weight="1" android:drawableEnd="@drawable/message" android:drawableRight="@drawable/message" android:gravity="center" android:paddingLeft="3dp" android:paddingRight="3dp" android:text="SMS" /> <TextView android:id="@+id/call" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableEnd="@drawable/call" android:drawableRight="@drawable/call" android:gravity="center" android:text="CALL" /> <TextView android:id="@+id/email" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:drawableEnd="@drawable/mail" android:drawablePadding="3dp" android:drawableRight="@drawable/mail" android:text="MAIL" /> 

Solutions Collecting From Web of "Android: возможность рисования рядом с TextView с весом для каждого TextView в LinearLayout"

Попытайтесь обойти это.

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:orientation="horizontal" android:padding="10dp"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:layout_weight="1"> <TextView android:id="@+id/sms" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="2dp" android:layout_marginRight="2dp" android:gravity="center" android:drawableRight="@drawable/message" android:text="SMS" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:layout_weight="1"> <TextView android:id="@+id/call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableRight="@drawable/call" android:gravity="center" android:text="CALL" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:layout_weight="1"> <TextView android:id="@+id/email" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableRight="@drawable/mail" android:gravity="center" android:text="MAIL" /> </LinearLayout> </LinearLayout> 

Введите описание изображения здесь

Основная проблема заключается в том, что вы устанавливаете layoutWidth = 0dp и weight 1. Это делает каждую TextView максимальной шириной в соответствии с весом. DrawableRight / drawableEnd устанавливает рисоваемый ресурс, который должен быть нарисован на крайнем правом краю представления. Если вы хотите, чтобы этот макет просто обернул его в другой viewGroup, как показано на рисунке @Dhinakaran. Лучшим подходом было бы использование макета вкладки .

Вместо использования нескольких линейных макетов вы можете использовать относительную компоновку.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="bottom" android:layout_weight=".33" android:gravity="center_horizontal|center_vertical"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall"/> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toEndOf="@+id/textView" android:layout_toRightOf="@+id/textView" android:src="@android:drawable/btn_star"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="bottom" android:layout_weight=".33" android:gravity="center_horizontal|center_vertical"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall"/> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toEndOf="@+id/textView2" android:layout_toRightOf="@+id/textView2" android:src="@android:drawable/btn_star"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="bottom" android:layout_weight=".33" android:gravity="center_horizontal|center_vertical"> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall"/> <ImageView android:id="@+id/imageView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toEndOf="@+id/textView3" android:layout_toRightOf="@+id/textView3" android:src="@android:drawable/btn_star"/> </RelativeLayout> </LinearLayout> 

результат

Введите описание изображения здесь

Создал пользовательскую кнопку, которая не требует компоновки макетов и может при необходимости выровнять доступные изображения.

Файл макета button.xml:

 <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_button" style="@style/custom_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:drawablePadding="5dp" android:gravity="center" /> 

Пользовательский кнопочный класс:

 public class DrawableAlignedButton extends RelativeLayout { private View view; private Button button; /** * @param context * used to inflate the View. * @param attrs * XML defined attributes. */ public DrawableAlignedButton(final Context context, final AttributeSet attrs) { super(context, attrs); init(context, attrs); } /** * @param context * used to inflate the View. */ public DrawableAlignedButton(final Context context) { super(context); init(context, null); } /** * @param context * used to inflate the View. * @param attrs * XML defined attributes. * @param style * the style for the View. */ public DrawableAlignedButton(final Context context, final AttributeSet attrs, final int style) { super(context, attrs, style); init(context, attrs); } private void init(final Context context, final AttributeSet attributeSet) { view = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.button, this, true); button = (Button) view.findViewById(R.id.custom_button); String buttonText = null; int drawableStart = 0; int drawableEnd = 0; if (attributeSet != null) { final TypedArray a = context.getTheme().obtainStyledAttributes(attributeSet, R.styleable.CustomButtonStyle, 0, 0); buttonText = a.getString(R.styleable.CustomButtonStyle_buttonText); drawableStart = a.getResourceId(R.styleable.CustomButtonStyle_buttonDrawableStart, 0); drawableEnd = a.getResourceId(R.styleable.CustomButtonStyle_buttonDrawableEnd, 0); a.recycle(); } FontUtil.getInstance(context).useNormalRegularFont(button); if (buttonText != null) { button.setText(buttonText); } button.setCompoundDrawablesRelativeWithIntrinsicBounds(drawableStart, 0, drawableEnd, 0); } /** * Sets the button text. * * @param text * the text to be set. */ public void setButtonText(final String text) { if (button != null) { button.setText(text); } } /** * Sets the drawable to the button. * * @param drawableStart * the drawable to set at the beginning of the text. * @param drawableEnd * the drawable to set at the end of the text. */ public void setDrawableStart(final int drawableStart, final int drawableEnd) { if (button != null) { button.setCompoundDrawablesRelativeWithIntrinsicBounds(drawableStart, 0, drawableEnd, 0); } } } 

Как использовать его в XML:

 <com.package.view.DrawableAlignedButton xmlns:drawableAlignedButton="http://schemas.android.com/apk/res-auto" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/transparent_button_selector" drawableAlignedButton:buttonDrawableStart="@drawable/small_active" drawableAlignedButton:buttonText="Button Text" />