2011-07-18 101 views
1

我遇到了一個9補丁按鈕背景的問題,我無法弄清楚我做錯了什麼。奇怪的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修補圖像: nine-patch

這是結果: enter image description here

正如你所看到的,填充和拉伸的區域似乎被完全忽略。 我有一個印象,它使用9補丁圖像作爲一個普通的PNG,但我不明白爲什麼。任何幫助將不勝感激,因爲這是開始得到我的神經:p

在此先感謝。

編輯

好了,所以這是一個完整的佈局中,我使用的按鈕。

<?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(); 
     } 
    }); 
+0

把它放到一個項目中。工作很好!看起來問題可能在其他地方,你可以公開更多的代碼嗎? –

+0

我編輯的帖子包括完整的佈局和我使用這個按鈕的代碼。正如你所看到的那樣,那裏真的沒有太多的事情發生,這是我覺得它很奇怪的原因之一,它不能正常工作......我在這裏真的沒有什麼特別的。 – Mopper

+2

你有沒有試過做一個乾淨的>構建?無關:爲什麼你想在Android設備上實現後退按鈕? – Mannaz

回答

0

它看起來像按鈕實際上是該尺寸,以及含RelativeLayout的背景+尺寸讓你覺得並非如此。您實際上不需要使用按鈕小部件。您可以將RelativeLayout的背景設置爲您的按鈕背景並實施OnClickListener。添加一個TextViewImageView它來獲得你想要的外觀。

0

您的按鈕和imageview都將layout_width設置爲WRAP_CONTENT,因此它們不會大於原始大小,因此您的9貼片不會被拉伸。