2013-09-26 3 views
1

Я использую ниже код для установки ширины изображения. Но это не работает.как установить высоту и ширину изображения, используя onTouch в android

XML:

`

<ImageView 
     android:id="@+id/card2" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="3dp" 
     android:layout_marginTop="120dp" 
     android:layout_toRightOf="@+id/card1" 
     android:contentDescription="@string/slot" 
     android:src="@drawable/spade_3" />` 

и Java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play__computer); 
    card1 = (ImageView)findViewById(R.id.card1); 
    card2 = (ImageView)findViewById(R.id.card2);   
    card1.setOnTouchListener(new ChoiceTouchListener()); 
    card2.setOnTouchListener(new ChoiceTouchListener()); 
} 
private final class ChoiceTouchListener implements OnTouchListener{ 

    public boolean onTouch(View v, MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_DOWN){ 
      v.getLayoutParams().width = 100; 
      return true; 
     } else{ 
      return false; 
     } 

    } 
} 

, когда я коснуться вид изображения, он ничего не делает.

ответ

1

Попробуйте

RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams) v.getLayoutParams(); 
param.width=200; 
v.setLayoutParams(param); 

надеюсь, что это сработает для вас.

+0

это работает для меня. Спасибо брат. – nick

+0

вы всегда приветствуетесь ... @nick – arjunkn

+0

@arjunkn ... как я могу установить позицию по умолчанию, когда я снова нажму на это изображение? Я использовал if(), но не использовал .. – nick

0

Попробуйте это:

private final class ChoiceTouchListener implements OnTouchListener{ 

    public boolean onTouch(View v, MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_DOWN){ 
      ImageView imgView = (ImageView) v; 

      int width = 100; 
      int height = 100; 

      LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width, height); 
      imgView.setLayoutParams(layoutParams); 

      return true; 
     } else{ 
      return false; 
     } 
    } 
} 
+0

Я использую относительный макет. это работает для меня? – nick

0

Используйте LayoutParams, чтобы установить высоту и ширину:

RelativeLayout layout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT); 

Вы можете получить доступ любые LayoutParams из кода с использованием View.getLayoutParams

+0

спасибо за ответ. как я могу использовать это в RelativeLayout? – nick

+0

см. Мой обновленный ответ –

+1

это работает анчит. спасибо – nick

Смежные вопросы