-2

ビューを動的に追加する LinearLayout があります。クリックしたときに各ビューの背景を変更する必要があります。

私は自分のコードでこれをやろうとしています:

public class UserDetailActivity extends Activity implements View.OnTouchListener {
...
@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.l_user_detail);

    Intent intent = getIntent();
    User user = (User) intent.getSerializableExtra("class");

    userWillGo = (LinearLayout) findViewById(R.id.linerLayout_userDetail_willGoTO);

    for (int i = 0; i < user.getUserWillGo().size(); i++) {
    View myView = (View)LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_event_list, userWillGo, false);
                myView.setLayoutParams(new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.FILL_PARENT,
                        LinearLayout.LayoutParams.FILL_PARENT));
                ...
                myView.setOnTouchListener(mOnTouchListener());
                userWillGo.addView(myView);
            }

}

private View.OnTouchListener mOnTouchListener() {
        return new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    v.setBackgroundResource(R.color.textBlue);
                }
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    v.setBackgroundResource(R.drawable.bg_item);
                }
                return true;
            }
        };
}

このコードの結果として得られるもの:

ここに画像の説明を入力

私が得る必要があるもの:

ここに画像の説明を入力

4

1 に答える 1

3

まず、レイアウトをループに追加するのではなく、リスト ビュー コンポーネントを使用することをお勧めします。

リスト ビューではアイテム セレクターを作成できますが、とにかく現在のシナリオでは、myView レイアウトで 描画可能なセレクター*selector_bg.xml*を次のように使用できます。 . シナリオで説明されているように、android:state_focused="true|false'を使用することもできます。

<?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true" android:drawable="@drawable/hover_bg" /> <!-- pressed -->
            <item android:drawable="@drawable/normal" /> <!-- default -->
        </selector>

myView.setBackgroundResource(R.drawable.selector_bg)

上記の詳細なリファレンスはこちらをクリックしてください

于 2013-03-20T12:40:21.917 に答える