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));

    }
};

テーブルの行をクリックすると、背景色が変わります。別の行をクリックすると、背景色も変わります。しかし、私が望むのは、一度に1行だけ背景色を変更する必要があるということです。

どうやってやるの ?任意の提案をいただければ幸いです。

前もって感謝します

4

3 に答える 3

1

この 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.                           
                    }
                }
            });

頑張ってください!

于 2015-03-20T16:18:28.833 に答える
1

drawable フォルダーに 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>

また

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

また

フォーカス時にテーブル行の背景色を変更する方法のリンクを参照してください。

于 2013-11-15T07:15:03.843 に答える
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
     }
}
};
于 2013-11-15T07:13:24.167 に答える