У меня есть ReltiveLayout с ImageView и TextView внутри.onTouch и onClick не запускаются правильно
Так у меня есть два слушателя событий:
onClick
onTouch
Я использую 9patch
для изображения. Когда я использую событие onTouch, onClick не стреляет вообще, а также onTouch не работает очень хорошо. Если отключить onTouch и оставить onClick, он срабатывает и изменяет Activity. Я хочу сделать onTouch и onClick работать вместе. Я хочу:
- Когда RelativeLayout нажатия она показывает выбранную кнопку ImageView
- В противном случае вывести нормальную кнопку ImageView
- onClickListener изменения активности.
Heres мой код:
StartBtn = (RelativeLayout) findViewById(R.id.StartBtn);
StartBtnImage = (ImageView) findViewById(R.id.StartBtnImage);
StartBtnText = (TextView) findViewById(R.id.StartBtnText);
StartBtn.setOnTouchListener(new TouchButton(StartBtnImage)); //Commenting this line makes the onClickListener work
StartBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StartBtnImage.setImageResource(R.drawable.btn_selected);
Log.d("ButtonClick", "Done");
Intent myIntent = new Intent(MainMenu.this, Game.class);
startActivity(myIntent);
}
});
И мой класс TouchButton:
public class TouchButton implements View.OnTouchListener {
ImageView IV;
public TouchButton(ImageView Image) {
IV = Image;
}
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
IV.setImageResource(R.drawable.btn_selected);
return true;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_OUTSIDE:
default:
IV.setImageResource(R.drawable.btn);
return false;
}
}
}
Вот мой макет
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainMenu">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/MainMenuBg"
android:background="@drawable/main_menu_bg" />
<RelativeLayout
android:layout_width="250dp"
android:layout_height="75dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="130dp"
android:id="@+id/StartBtn"
android:clickable="true">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/StartBtnImage"
android:src="@drawable/btn" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Start"
android:id="@+id/StartBtnText"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:singleLine="false"
android:gravity="center|center_vertical|center_horizontal"
android:textSize="50dp" />
</RelativeLayout>
Я знаю, что я плохо объяснял, так вот видео:https://www.youtube.com/watch?v=PtdUsW-Dnqk
Попробуйте написать свой собственный селектор кнопок (XML-файл). –
Я не уверен, как это сделать. Я следую учебнику и делаю все, как есть, но на моем устройстве он работает не так. –
[Пример] (http://www.mkyong.com/android/android-imagebutton-selector-example/) –