2013-11-15 25 views
2

在我的Android應用程序有它在運行時加載表格佈局。我爲表格行設置了一個OnClickListener。安卓:表中的行更改背景顏色,當它被點擊

tr.setClickable(true); 
tr.setOnClickListener(trOnClickListener); 

我需要改變錶行的背景色被點擊時它。這是我的onClick方法。

private OnClickListener trOnClickListener = new OnClickListener() { 
    public void onClick(View v) { 

     TableRow tablerow = (TableRow)v; 

     tablerow.setBackgroundDrawable(getResources().getDrawable(
       R.drawable.ab_stacked_solid_whiteaction)); 

    } 
}; 

當我點擊它改變了背景色錶行。當我點擊另一行時,它也會改變它的背景顏色。但我想要的是, 應該一次只更改一行的背景顏色。

我該怎麼做?任何建議表示讚賞。

在此先感謝

回答

0

試試這個

private View pressedView = null; 

private OnItemClickListener getStartedListItem = new OnItemClickListener() { 

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
     long arg3) { 
    // TODO Auto-generated method stub 
    Intent myintent = new Intent(getApplicationContext(),GetStartedWebview.class); 
    myintent.putExtra("SelectedItem", getStartedItems[position]); 
    startActivity(myintent); 

    if(pressedView != null) { 
     pressedView.setBackgroundResource(..); // reset background of old item 
     pressedView = arg1; // Point pressedView to new item 
    } 
} 
}; 
1

創建文件夾繪製XML並將其設置爲BG

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/cell_shape_in_white" android:state_pressed="true"/> 
    <item android:drawable="@drawable/cell_shape_in_grey"/> 

</selector> 

OR

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 


    <item android:drawable="@drawable/cell_shape_in_white" android:state_focused="true" android:state_pressed="false"/> 
    <item android:drawable="@drawable/cell_shape_in_white" android:state_focused="true"/> 
    <item android:drawable="@drawable/cell_shape_in_grey" android:state_focused="false"/> 
    <item android:drawable="@drawable/cell_shape_in_grey"/> 

</selector> 

OR

參見鏈路How to change the background color of a TableRow when focused?

+0

我用過這個。然後,當我點擊一行時,它將其背景顏色更改爲黃色(作爲示例)。但在一秒鐘後,它會變回以前的顏色(白色)。我需要保持這種顏色(黃色),直到用戶點擊另一行。當用戶點擊另一行時,其顏色應該改爲黃色,以前點擊的行的顏色應該是白色。實際上,只有一排可以是黃色的。我怎樣才能做到這一點?你可以解釋一下嗎? – Rose18

+0

你是否在動態創建表格 –

+0

是的。我的表格佈局正在動態加載。 – Rose18

0

此非XML修復導致先前選擇的行恢復到中性表背景色(中將灰色)時,選擇並突出顯示另一行(黃色)。這是通過引用所選(子)行的適當索引號實現的。

public class dataTable extends Fragment { 
TextView tvSelectedRow = null; 
... 
row.setOnClickListener(new View.OnClickListener(){ 
       @Override 
       public void onClick(View v){ 
        if(tvSelectedRow == null) { 
         iRowNumber = tableLayout.indexOfChild(v); //This returns the rowID of the selected row 
         tableLayout.setBackgroundResource(R.color.LtGrey); //sets background color to LtGray for whole table. 
         row.setBackgroundResource(R.color.yellow);//changes background color of selected row to yellow.       
        }else if(tvSelectedRow != null){ 
         tableLayout.getChildAt(iRowNumber).setBackgroundResource(R.color.LtGrey);//causes previously selected row to revert to LtGray. 
         iRowNumber = tableLayout.indexOfChild(v); //Resets iRowNumber to new row selected by user....      
         row.setBackgroundResource(R.color.yellow);//changes background color of selected row to yellow.       
        } 
       } 
      }); 

祝你好運!

相關問題