在我的Android应用程序中,我使用一些图像按钮滚动浏览ViewFlipper。
我的代码适用于所有片段,除了某些手机中的1片段(它不适用于Motorola Moto g2 - Android 4.4.4
,Samsung Galaxy s2 - Android 4.4.4
,但它在Galaxy S3 - Android 4.4.4
上工作正常,{{1} },Asus Zenfone 5
和模拟器上的。)
片段的代码如下:
LG L2
(片段包含大量内容,这是其中的一部分。)
这是所有图像按钮的初始化:
<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:background="@drawable/exercise_g_background"
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="com.sfcodingteam.psykeappautostima.slidingmenu.fragments.exercise.ExerciseG">
<ImageButton
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@drawable/buttons_exercise_g"
android:contentDescription="@string/Forward"
android:src="@drawable/ic_go_next" />
<ImageButton
android:id="@+id/btnPrevious"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@drawable/buttons_exercise_g"
android:contentDescription="@string/Back"
android:src="@drawable/ic_go_previous" />
<ImageButton
android:id="@+id/btnAudio"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/btnNext"
android:layout_centerHorizontal="true"
android:background="@drawable/buttons_exercise_g"
android:contentDescription="@string/Audio" />
<ViewFlipper
android:id="@+id/viewFlipper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textViewTitleG00"
style="@style/TitleStyle"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="@string/G" />
<TextView
android:id="@+id/textViewG00"
style="@style/TextStyleFirstSentence"
android:layout_alignParentEnd="false"
android:layout_alignParentRight="true"
android:layout_below="@+id/textViewTitleG00"
android:layout_marginTop="25dp"
android:text="@string/ExerciseG00" />
<Button
android:id="@+id/btnStart"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_below="@+id/textViewG00"
android:layout_centerHorizontal="true"
android:layout_marginTop="80dp"
android:background="@drawable/buttons_exercise_g"
android:text="@string/btnStart"
android:textColor="@android:color/white"
android:textStyle="bold" />
</RelativeLayout>
</ScrollView>
</ViewFlipper>
</RelativeLayout>
所有片段的初始化都是相同的(所有片段都有btnNext,btnPrevious,btnAudio和btnStart)。
只有btnStart正常工作而其他人没有。
你有什么建议吗?
编辑:发现问题,viewFlipper在我试图触及的按钮上打开。
所以,我只需要添加
protected void initializeBtnNext() {
btnNext = (ImageButton) view.findViewById(R.id.btnNext);
if (btnNext == null)
return;
btnNext.setVisibility(View.INVISIBLE);
btnNext.setEnabled(false);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewFlipper.getDisplayedChild() + 1 < viewFlipper.getChildCount())
goNext();
else getActivity().onBackPressed();
}
});
}
protected void initializeBtnAudio() {
btnAudio = (ImageButton) view.findViewById(R.id.btnAudio);
if (btnAudio == null)
return;
btnAudio.setImageResource(R.drawable.ic_play);
btnAudio.setEnabled(false);
btnAudio.setVisibility(View.INVISIBLE);
btnAudio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickBtnAudio();
}
});
}
protected void initializeBtnPrevious() {
btnPrevious = (ImageButton) view.findViewById(R.id.btnPrevious);
if (btnPrevious == null)
return;
btnPrevious.setVisibility(View.INVISIBLE);
btnPrevious.setEnabled(false);
btnPrevious.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goPrevious();
}
});
}
protected void initializeBtnStart() {
btnStart = (Button) view.findViewById(R.id.btnStart);
if (btnStart == null)
return;
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goNext();
}
});
}
在viewFlipper中我很高兴!谢谢大家!
答案 0 :(得分:2)
刚刚更新了您的ImageButton
XML
<ImageButton
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@drawable/buttons_exercise_g"
android:contentDescription="@string/Forward"
android:src="@drawable/ic_go_next"
android:clickable="true"/>
在你的Java中。
// Set this oncreate method
ImageButton btn=(ImageButton)findViewById(R.id.btnNext);
btn.setOnClickListener(this);
// Then implement this
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnNext :
//Show Toast
break;
default :
break;
}
}
答案 1 :(得分:0)
你是否在其他地方Enabled
按了按钮?因为所有这些都是Disabled
。
btnXXX.setEnabled(false);
答案 2 :(得分:-1)
您可以试试这个。我正在使用它并适用于所有设备:
<ImageView
android:id="@+id/imgButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:longClickable="true"
android:onClick="refreshData"
android:layout_margin="3dp"
android:contentDescription="@string/lbl_refresh"
android:src="@drawable/refresh_image" />
refreshData方法是java:
public void refreshData(View view) {
// all the code here
}
答案 3 :(得分:-1)
XML文件:
<EditText
android:id="@+id/editbankrefdate"
android:layout_height="50dip"
android:layout_marginLeft="3dip"
android:background="#FFFFFF"
android:inputType="date"
android:singleLine="true"
android:tag="focusable"
android:width="170dip" />
<ImageButton
android:id="@+id/selectdateimg"
android:layout_width="wrap_content"
android:layout_height="50dip"
android:layout_alignBottom="@+id/editText"
android:layout_toRightOf="@+id/editText"
android:cropToPadding="true"
android:src="@drawable/calendar" />
和java代码是:
ImageButton xClickDateImg;
xClickDateImg = (ImageButton) findViewById(R.id.selectdateimg);
xClickDateImg.setOnClickListener(this);
/*
* PerForm Date Click Operation ---------------
*/
@Override
public void onClick(View v) {
showDialog(0);
}
@Deprecated
protected Dialog onCreateDialog(int id) {
return new DatePickerDialog(this, datePickerListener, year, month, day);
}
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
edtRefdate.setKeyListener(null);
edtRefdate.setText(selectedDay + " / " + (selectedMonth + 1)
+ " / " + selectedYear);
}
};
/*
* PerForm Date Click Operation Ended
* -------------------------------------------------------------
*/