0

アプリケーションでクリックされた画像を検出する必要があります。そのためにいろいろな方法を試しています。整数配列から Imageview オブジェクトを動的に生成し、1 つの画像がクリックされたことを検出しましたが、どの画像がクリックされたかは検出しませんでした。

2行の画像を配置する必要がありますが、この画像の動きは個別ではなく同時にブースにする必要があります。1 つは垂直方向、もう 1 つは水平方向の 2 つのレイアウトで horizo​​ntalScrollView を作成しました。縦方向に 2 つのイメージビューを配置し、このレイアウトを for ループを介して横方向レイアウトに送信します。

XML:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:id="@+id/layoutContenedor"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:paddingBottom="@dimen/activity_vertical_margin"
         android:paddingLeft="@dimen/activity_horizontal_margin"
         android:paddingRight="@dimen/activity_horizontal_margin"
         android:paddingTop="@dimen/activity_vertical_margin"
         tools:context=".MainActivity" >

   <HorizontalScrollView
    android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none">

       <LinearLayout
            android:id="@+id/linearLayoutHorizontal"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

       </LinearLayout>

     </HorizontalScrollView>

    </LinearLayout>

マイ アクティビティ:

    public class MainActivity extends Activity implements OnClickListener{

    private LinearLayout layoutDinamicoHorizontal;
    private LinearLayout layoutGlobal;

    private Integer[] listaPeliculas = { R.drawable.android1, R.drawable.android2,
            R.drawable.android3, R.drawable.android4, R.drawable.android5, R.drawable.android6,
            R.drawable.android7, R.drawable.android8, R.drawable.android9, R.drawable.android10,
            R.drawable.android11, R.drawable.android12, R.drawable.android13, R.drawable.android14,
            R.drawable.android15, R.drawable.android16, R.drawable.android17, R.drawable.android18,
            R.drawable.android19, R.drawable.android20, R.drawable.android21, R.drawable.android22,
            R.drawable.android23, R.drawable.android24, R.drawable.android25, R.drawable.android26,
            R.drawable.android27, R.drawable.android28, R.drawable.android29, R.drawable.android30};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // layout in variable of LinearLayout type
        layoutDinamicoHorizontal = (LinearLayout) findViewById(R.id.linearLayoutHorizontal);
        layoutGlobal = (LinearLayout) findViewById(R.id.layoutContenedor);


        layoutGlobal.setBackgroundResource(R.drawable.fondodepantallacarrusel);

        // create ImageView
        ImageView imageViewDinamicoArriba;
        ImageView imageViewDinamicoAbajo;

        for (int i = 0; i < 30; i = i+2){

            // Creamos a new object from ImageView class
            imageViewDinamicoArriba = new ImageView(this);
            imageViewDinamicoAbajo = new ImageView(this);

            // padding to objects of ImageView class
            imageViewDinamicoArriba.setPadding(10, 15, 10, 15);
            imageViewDinamicoAbajo.setPadding(10, 15, 10, 15);


            Drawable imagenArriba = getResources().getDrawable(listaPeliculas[i]);
            Drawable imagenAbajo = getResources().getDrawable(listaPeliculas[i+1]);

            // Se los pasamos a los objetos
            imageViewDinamicoArriba.setImageDrawable(imagenArriba);
                    imageViewDinamicoAbajo.setImageDrawable(imagenAbajo);



            LinearLayout vertical = new LinearLayout(this);
                    vertical.setOrientation(LinearLayout.VERTICAL);

                    // Añadimos las vistas al objeto vertical
                    vertical.addView(imageViewDinamicoArriba);  
                    //vertical.setOnClickListener(this);

                    vertical.addView(imageViewDinamicoAbajo);

            vertical.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    // I Tryed with every metods of View 
                    Log.i("galeria", "Imagen: " + v.getId());


                }
            });


                    // Add vertical Layout to horizontal Layout 
            layoutDinamicoHorizontal.addView(vertical);
        } // End for        
     } // End onCreate

      @Override
      public void onClick(View v) {

      }

        } // End Activity
4

2 に答える 2

0

ビューを動的に作成する場合、デフォルトでは ID は追加されません。ID を使用してフィルタリングする場合は、ID を手動で追加する必要があります。

imageViewDinamicoArriba.setId(i);

詳細については、setId メソッドのドキュメントを参照してください。

それが役に立てば幸い。

于 2013-11-15T08:24:30.427 に答える