下载区
挑战练习二代码demo -> Link
挑战练习-题目1(2.7):为 TextView 添加监听器
NEXT按钮不错,但如果用户单击应用的 TextView 文字区域(地理知识问题),也可以跳转到下一道题,用户体验会更好。
参考解决方法:
只需要在mQuestionTextView对应绑定Id语句后面贴上这样一段代码
mQuestionTextView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
updateQuestion();
}
});
解释:照葫芦画瓢,监听器里面放的就是Next_Buton监听器里面的内容,此题不难。
挑战练习-题目2(2.8):添加后退按钮
为GeoQuiz应用新增后退按钮(PREV),用户单击时,可以显示上一道测试题目。完成后的用户界面应如图2-14所示
step 1:加入字符串
在strings.xml里,next_button后面加上
<string name="prev_button">Prev</string>
解释:添加字符串资源
在layout.xml文件原本nextbutton处,前后增加Button和LinearLayout
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/prev_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/prev_button"
android:drawableLeft="@drawable/arrow_left"
android:drawablePadding="4dp" />
<Button
android:id="@+id/next_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next_button"
android:drawableRight="@drawable/arrow_right"
android:drawablePadding="4dp" />
</LinearLayout>
解释:在布局文件中增加一个button,由于题目是水平布局,所以要加上LinearLayout标签,设置orientation=“horizontal”
step 3:增加功能在QuizActivity.java中声明变量
private Button mPrevButton;
在Oncreate方法内,mNextButton.setOnListener方法后面,插入mPrevButton的相关用法
解释:除了下面这句话,其他与NextButton无异。表达的意思就是如果mCurrentIndex下表减一小于0的时候,我就将这个mCurrentIndex设为最后一条,这样可以防止出现异常。mPrevButton = (Button) findViewById(R.id.prev_button); mPrevButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mCurrentIndex = mCurrentIndex-1 < 0? mQuestionBank.length - 1 : mCurrentIndex - 1; updateQuestion(); } });
mCurrentIndex= mCurrentIndex-1< 0?mQuestionBank.length- 1: mCurrentIndex- 1;
挑战练习-题目1(2.7):从按钮到图标按钮
题目和答案在书上写的很详细了,在这里就不再赘述,不懂可以自行下载demo。
解释:android:contentDescription这个属性的主要功能就是为视力有障碍的人增加对控件的解释。可以参考->Link
最终效果图: