2012-01-30 566 views
2

我正在使用兩個按鈕,一個用於下一個新聞,另一個用於之前的新聞。在我的活動中,當我在第一條新聞時,我的按鈕應該用灰色圖像設置圖像,當我向前移動時,我的上一個新聞按鈕應該從灰色圖像變爲彩色圖像。同樣,當我到達最新消息時,我的下一個按鈕應該變成灰色圖像。更改按鈕的背景圖片

這是我的xml文件。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFFFF" 
    > 

    <TextView 
     android:id="@+id/tv_submitDate" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:text="Medium Text" 
     android:textColor="#000000" 
     android:padding="5dp"/> 

    <TextView 
     android:id="@+id/tv_headline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tv_submitDate" 
     android:text="Medium Text" 
     android:textColor="#000000" 
     android:textStyle="bold" 
     android:padding="5dp"/> 

    <View 
     android:id="@+id/viewSeperator" 
     android:layout_width="fill_parent" 
     android:layout_height="2dip" 
     android:layout_below="@+id/tv_headline" 
     android:background="#FF909090" /> 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/btn_relative_layout" 
     android:layout_below="@+id/viewSeperator" android:padding="10dp"> 

     <LinearLayout 
      android:id="@+id/linearLayout1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <TextView 
       android:id="@+id/tv_detailNews" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Medium Text" 
       android:textColor="#000000" /> 
     </LinearLayout> 
    </ScrollView> 

    <LinearLayout 
     android:id="@+id/btn_relative_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="#DCDCDC" 
     android:padding="10sp" > 


     <Button 
      android:id="@+id/btn_prevNews" 
      android:layout_width="120sp" 
      android:layout_height="40sp" 
      android:layout_weight="0.5" 
      android:layout_marginRight="5sp" 
      android:background="@drawable/arrow_left" 
      android:clickable="true" /> 


     <Button 
      android:id="@+id/btn_nextNews" 
      android:layout_width="120sp" 
      android:layout_height="40sp" 
      android:layout_marginLeft="5sp" 
      android:layout_weight="0.5" 
      android:background="@drawable/arrow_right" 
      android:clickable="true" /> 
     </LinearLayout> 


</RelativeLayout> 

這是我想改變我的按鈕的圖像:

public void onClick(View v) { 

     if (v == btnPrevNews && newsId > 0) { 
      if (newsId > 0) { 
       newsId--; 
       putDetailNewsinView(newsId); 
      } else if (newsId == 0) { 
       btnPrevNews 
         .setBackgroundResource(R.drawable.disable_arrow_left); 
       btnPrevNews.setEnabled(false); 
      } 
      // btnPrevNews.setVisibility(View.INVISIBLE); 

     } else if (v == btnNextNews && newsId < newsListDetail.size() - 1) { 
      if (newsId < newsListDetail.size() - 1) { 
       newsId++; 
       putDetailNewsinView(newsId); 
       if(newsId == 0) 
        btnNextNews.setBackgroundDrawable(getResources().getDrawable(
          R.drawable.disable_arrow_right)); 
      } else if (newsId == newsListDetail.size()) { 
       // btnNextNews.setVisibility(View.INVISIBLE); 
       btnNextNews.setBackgroundDrawable(getResources().getDrawable(
         R.drawable.disable_arrow_right)); 
       // btnNextNews.setBackgroundResource(R.drawable.disable_arrow_right); 
       btnNextNews.setEnabled(false); 
      } 
     } 

    } 

請幫我在這。

在此先感謝。

+1

您好,歡迎!請告訴我們你到目前爲止的情況。你有沒有在代碼或xml中定義按鈕? – WarrenFaith 2012-01-30 14:03:11

回答

1

我假設你有方法,如果按下按鈕,它將被執行。只要使用這些並添加邏輯來改變這些按鈕的背景爲灰色: 給兩個按鈕的ID,您可以訪問這些按鈕與: Button mybutton = (Button) findViewById(R.id.yourid);

現在你可以做各種事情與你的按鈕,如改變的背景。

編輯: 問題可能出現在圖片中,但如果我是你,我會設置一些斷點並逐步調試。

我入侵了我的一些代碼來測試這個功能,它對我來說工作正常。下面是它:

package my.namespac; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class SomeTestProjectActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button = (Button)findViewById(R.id.btn_prevNews); 

     button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Button b = (Button)v; 
       v.setBackgroundDrawable(getResources().getDrawable(R.drawable.koala)); 

      } 
     }); 
    } 
} 

並且佈局的XML:

<?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" > 


      <Button 
      android:id="@+id/btn_prevNews" 
      android:layout_width="120sp" 
      android:layout_height="40sp" 
      android:layout_weight="0.5" 
      android:layout_marginRight="5sp" 
      android:background="@drawable/ic_launcher" 
      android:clickable="true" /> 
</LinearLayout> 
+0

我知道這一點,我正在使用這個。在我的代碼中,我使用了這個語句,但它並沒有改變圖像。 btnNextNews.setBackgroundDrawable(getResources()getDrawable( \t \t \t \t \t \t \t R.drawable.disable_arrow_right)。); – aiRbornE 2012-01-30 14:11:56

+0

是啊。非常感謝。 – aiRbornE 2012-01-30 15:07:24