Заполнение не работает с определенным фоновым ресурсом

Может ли кто-нибудь объяснить мне, почему это происходит?

У меня довольно простой класс, расширяющий TextView. Когда я устанавливаю цвет фона на Color.BLUE, заполнение работает отлично. Когда я меняю фоновый ресурс на android.R.drawable.list_selector_background, мое дополнение больше не применяется. Что такое F?

Вот мой класс пользовательского интерфейса:

public class GhostDropDownOption extends TextView { TextView text_view; public GhostDropDownOption(Context context, AttributeSet attrs) { super(context, attrs); setup(context); } public GhostDropDownOption(Context context) { super(context); setup(context); } private void setup(Context context) { this.setClickable(false); // THE 2 LINES BELOW ARE THE ONLY THING I'M CHANGING //this.setBackgroundResource(android.R.drawable.list_selector_background); this.setBackgroundColor(Color.BLUE); } } 

И я использую его в макете следующим образом:

 <trioro.voyeur.ui.GhostDropDownOption android:id="@+id/tv_dropdown_option_1" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:gravity="center_vertical" android:text="@string/request_control_dropdown_option_1" android:textColor="#000000" android:padding="10dip"/> 

И это результат изменения фона: Введите описание изображения здесь

Solutions Collecting From Web of "Заполнение не работает с определенным фоновым ресурсом"

Вызов:

 this.setBackgroundResource(android.R.drawable.list_selector_background); 

Удалит любое ранее заполненное дополнение (это должно заставить его работать с 9-патч-активами).

Попробуйте установить дополнение в код после строки выше, например:

 this.setPadding(PADDING_CONSTANT, PADDING_CONSTANT, PADDING_CONSTANT, PADDING_CONSTANT); 

Просто помните, что значения, отправленные в setPadding, находятся в пикселях NOT dip!

Вы должны установить фоновый рисунок в XML, если это вообще возможно. Если вы установите его в коде, он будет использовать отступы из ваших доступных ресурсов, а не то, что вы установили в XML, поэтому, если это необходимо сделать программным путем, вы хотите получить текущее дополнение, временно сохранить его, установить фон , А затем установите отступы назад, как предлагает @TofferJ.

Причиной этого является то, что сами чертежи могут иметь отступы, в случае 9-патч-изображений (где нижняя и правая границы пикселей определяют величину заполнения).

Ваше решение должно состоять в том, чтобы просто установить фоновый ресурс в XML:

android:background="@android:drawable/list_selector_background"

Хотя я считаю, что это может быть частный ресурс, который вам нужно будет скопировать в свой проект.