Странное поведение с 9 патчами - PullRequest
1 голос
/ 18 июля 2011

Я столкнулся с проблемой с 9-патчевым фоном кнопки и не могу понять, что я делаю неправильно.

Это xml-конфигурация для кнопки:

<Button android:layout_width="wrap_content" android:id="@+id/buttonBack"
        android:layout_alignParentLeft="true" android:layout_centerVertical="true"
        android:padding="2dp" android:layout_height="wrap_content"
        android:background="@drawable/selector_bg_back_button" android:text="@string/back"
        android:textColor="#ffffff" android:textStyle="bold"
        android:layout_marginLeft="2dp" />

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

Это изображение с 9 патчами: nine-patch

И эторезультат: enter image description here

Как видите, области заполнения и растяжения полностью игнорируются.У меня сложилось впечатление, что он использует изображение с 9 патчами в качестве простого PNG, но я не могу понять, почему.Любая помощь будет признательна, потому что это начинает действовать мне на нервы: p

Заранее спасибо.

Edit

Хорошо, так что этополный макет, в котором я использую кнопку.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<RelativeLayout android:layout_width="fill_parent"
    android:background="#0ab0ed" android:layout_height="40dip"
    android:padding="0px">
    <Button android:layout_width="wrap_content" android:id="@+id/buttonBack"
        android:layout_alignParentLeft="true" android:layout_centerVertical="true"
        android:padding="2dp" android:layout_height="wrap_content"
        android:background="@drawable/btn_bg_back_blue" android:text="@string/back"
        android:textColor="#ffffff" android:textStyle="bold"
        android:layout_marginLeft="2dp" />
    <ImageView android:layout_width="wrap_content"
        android:layout_height="fill_parent" android:src="@drawable/logo"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent"
    android:padding="10dp" android:layout_height="wrap_content"
    android:background="#f5f5f5">
    <ImageView android:layout_height="wrap_content"
        android:layout_margin="10dp" android:layout_centerHorizontal="true"
        android:layout_width="wrap_content" android:id="@+id/image" />
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/txtTitle"
        android:textColor="#182973" android:textSize="16dp"
        android:textStyle="bold" android:gravity="center_horizontal" />
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:background="#ffffff">
    <TextView android:layout_width="wrap_content"
        android:layout_alignParentTop="true" android:layout_alignParentLeft="true"
        android:layout_height="wrap_content" android:id="@+id/txtDate" style="@style/content" />
    <ScrollView android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <WebView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/webview" android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
    </ScrollView>
</RelativeLayout>

И с точки зрения кода, я мало что могу вам показать.Все, что я делаю, это добавляю к кнопке очень простого слушателя:

Button back = (Button) findViewById(R.id.buttonBack);
    back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Для вашей кнопки и вашего изображения для layout_width установлено значение WRAP_CONTENT, поэтому они не будут больше исходного размера и, следовательно, ваш 9-патч не будет растянут.

0 голосов
/ 19 июля 2011

Похоже, кнопка на самом деле этого размера, а фон + размер содержащего RelativeLayout заставляет вас думать иначе. Вам на самом деле не нужно использовать виджет кнопки. Вы можете установить фон RelativeLayout на фон своей кнопки и реализовать OnClickListener. Добавьте TextView и ImageView, чтобы получить желаемый вид.

...