Почему выходной размер ImageView отличается от .xml

#java #android #xml #drag-and-drop #imageview

#java #Android #xml #перетаскивание #imageview

Вопрос:

MainActivity.java

 private ViewGroup rootLayout;
private int _xDelta;
private int _yDelta;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rootLayout = (ViewGroup) findViewById(R.id.view_root);
    ImageView img = (ImageView) rootLayout.findViewById(R.id.imageView);

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150, 150);
    img.setLayoutParams(layoutParams);
    img.setOnTouchListener(new ChoiceTouchListener());
}



private final class ChoiceTouchListener implements View.OnTouchListener {
    public boolean onTouch(View view, MotionEvent event) {
        final int X = (int) event.getRawX();
        final int Y = (int) event.getRawY();
        switch (event.getAction() amp; MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
                RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
                _xDelta = X - lParams.leftMargin;
                _yDelta = Y - lParams.topMargin;
                break;
            case MotionEvent.ACTION_UP:
                break;
            case MotionEvent.ACTION_POINTER_DOWN:
                break;
            case MotionEvent.ACTION_POINTER_UP:
                break;
            case MotionEvent.ACTION_MOVE:
                RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
                        .getLayoutParams();
                layoutParams.leftMargin = X - _xDelta;
                layoutParams.topMargin = Y - _yDelta;
                layoutParams.rightMargin = -250;
                layoutParams.bottomMargin = -250;
                view.setLayoutParams(layoutParams);
                break;
        }
        rootLayout.invalidate();
        return true;
    }
}
  

main_activity.xml

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

<ImageView
    android:id="@ id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/cable"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:contentDescription="" />

</RelativeLayout>
  

Ожидаемый результат

activity_main.xml дизайн

Результат

протестировано на эмуляторе

Пожалуйста, помогите мне изменить размер ImageView. Или покажите часть кода, которая может быть изменена. Пожалуйста, обратите внимание, я пытался изменить layout_width и layout_height, но ничего не изменилось.

Комментарии:

1. почему вы программно устанавливаете LayoutParams в ImageView?

Ответ №1:

Я бы предположил, что разрешение файла изображения в вашей drawable папке слишком мало, поэтому, когда это wraps_content , это маленькое изображение. Попробуйте изменить размер изображения или использовать hdpi, mdpi, xdpi, xxdpi и xxxdpi папки в вас drawable .

Ответ №2:

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

    <ImageView
        android:id="@ id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:contentDescription=""
        android:scaleType="fitCenter"
        android:src="@drawable/cable" />

</RelativeLayout>
  

замените этот код своим

Комментарии:

1. каков размер и размеры вашего изображения?

2. вы имели в виду эту информацию? 348×250 PNG (32-битный цветной) 36,52K @Mohit Trivedi

Ответ №3:

Я нашел решение. Используя этот код

 img.getLayoutParams().height = 1000;
img.getLayoutParams().width = 1000;
  

Спасибо, ребята.