2017-01-13 4 views
0

単純な画像ビューを作成してフレームを設定し、xとy座標を設定する前にxとy座標を設定しています。動作していないボタンのクリックイベント。
XとY座標を設定したときにボタンクリックイベントが機能しない

私のクラス

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

private ImageView viewImage; 
private Button btnCapture; 
private static final int RESULT_LOAD_IMAGE = 1; 
private static final int REQUEST_IMAGE_CAPTURE = 2; 
private Uri mCapturedImageURI; 

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btnCapture = (Button) findViewById(R.id.btnCapture); 
    btnCapture.setX(850); 
    btnCapture.setY(300); 
    btnCapture.setOnClickListener(this); 
    viewImage = (ImageView) findViewById(R.id.viewImage); 
    viewImage.setOnTouchListener(new Touch(getApplicationContext())); 
} 


@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
private void activeTakePhoto() { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     String fileName = "temp.jpg"; 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.Images.Media.TITLE, fileName); 
     mCapturedImageURI = getContentResolver() 
       .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
         values); 
     takePictureIntent 
       .putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 
} 

private void activeGallery() { 
    Intent intent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(intent, RESULT_LOAD_IMAGE); 
} 

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case RESULT_LOAD_IMAGE: 
      if (requestCode == RESULT_LOAD_IMAGE && 
        resultCode == RESULT_OK && null != data) { 

       Uri selectedImage = data.getData(); 
       String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver() 
         .query(selectedImage, filePathColumn, null, null, 
           null); 
       cursor.moveToFirst(); 
       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String picturePath = cursor.getString(columnIndex); 
       cursor.close(); 

       Bitmap bitmap = BitmapFactory.decodeFile(picturePath); 
       viewImage.setImageBitmap(bitmap); 

      } 
     case REQUEST_IMAGE_CAPTURE: 
      if (requestCode == REQUEST_IMAGE_CAPTURE && 
        resultCode == RESULT_OK) { 
       String[] projection = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = 
         getContentResolver().query(mCapturedImageURI, projection, null, 
           null, null); 
       int column_index_data = cursor.getColumnIndexOrThrow(
         MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       String picturePath = cursor.getString(column_index_data); 
       cursor.close(); 
       Bitmap bitmap = BitmapFactory.decodeFile(picturePath); 
       viewImage.setImageBitmap(bitmap); 
      } 
    } 
} 

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.btnCapture: 
      final Dialog dialog = new Dialog(MainActivity.this); 
      dialog.setContentView(R.layout.custom_dialog_box); 
      dialog.setTitle("Select Image"); 
      Button dialogButton = (Button) dialog.findViewById(R.id.btnExit); 
      dialogButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
       } 
      }); 
      Button btnChoosePath = (Button) dialog.findViewById(R.id.btnChoosePath); 
      btnChoosePath.setOnClickListener(new View.OnClickListener() { 
       @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
       @Override 
       public void onClick(View v) { 
        activeGallery(); 
        dialog.dismiss(); 
       } 
      }); 
      Button btnTakePhoto = (Button) dialog.findViewById(R.id.btnTakePhoto); 
      btnTakePhoto.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        activeTakePhoto(); 
        dialog.dismiss(); 
       } 
      }); 
      dialog.show(); 
      break; 
    } 

} 

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<Button 
    android:id="@+id/btnCapture" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/camera_icon" /> 

<RelativeLayout 
    android:id="@+id/FrameLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


     <ImageView 
      android:id="@+id/viewImage" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="matrix" /> 
    </FrameLayout> 

    <ImageView 
     android:id="@+id/abc" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/aa" /> 
</RelativeLayout> 

+0

あなたはonClick()メソッドで 'click listener'を再度設定する必要はありません。削除するだけでいいです。 –

+0

はい@junaidhafeez私はこれを忘れていましたが、変更したが動作していない@ junaidhafeez – Joy

答えて

2

次でonClick(View view)方法を交換してくださいすることができます。

@Override 
public void onClick(View view) { 
    switch (view.getId()) { 
     case R.id.btnCapture: 

        final Dialog dialog = new Dialog(MainActivity.this); 
        dialog.setContentView(R.layout.custom_dialog_box); 
        dialog.setTitle("Select Image"); 
        Button dialogButton = (Button) dialog.findViewById(R.id.btnExit); 
        dialogButton.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          dialog.dismiss(); 
         } 
        }); 
        Button btnChoosePath = (Button) dialog.findViewById(R.id.btnChoosePath); 
        btnChoosePath.setOnClickListener(new View.OnClickListener() { 
         @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 
         @Override 
         public void onClick(View v) { 
          activeGallery(); 
          dialog.dismiss(); 
         } 
        }); 
        Button btnTakePhoto = (Button) dialog.findViewById(R.id.btnTakePhoto); 
        btnTakePhoto.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          activeTakePhoto(); 
          dialog.dismiss(); 
         } 
        }); 
        dialog.show(); 

      break; 
    } 

} 

編集済み回答。あなたMainActivity.class

btnCapture.setX(300); 
    btnCapture.setY(850); 

で、次のものを変更し、次を使用してXMLファイルを置き換え 。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<RelativeLayout 
    android:id="@+id/FrameLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true"> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


     <ImageView 
      android:id="@+id/viewImage" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="matrix" /> 
    </FrameLayout> 

    <ImageView 
     android:id="@+id/abc" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@drawable/blue_squre" /> 
</RelativeLayout> 

<ImageButton 
    android:id="@+id/btnCapture" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/ic_launcher" /> 

そして、あなたのXML内の一つは、あなたがButtonためbtnCapture IDを使用します。 .classファイルにImageButtonのオブジェクトを作成します。どのようにあなたのために働くのかわからない。しかし、私はそれを試して変更します。

+0

はい@Mehul私はこれを忘れましたが、変更した後@ Mehul仕事していません – Joy

+0

あなたのXMLファイルを共有してください。私はここで私のために働いています。 –

+0

@ User6829548:これはテストしましたか? –

関連する問題