我在一个片段中有两个ImageButton(id next_btn和previous_btn),它具有以下布局 -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.geniusesafrica.geniuses.activities.StudyKitActivity">
<RelativeLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:elevation="2dp"
android:orientation="horizontal"
android:background="@color/colorPrimary">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/subject_image"
android:layout_marginEnd="5dp"
android:src="@drawable/commerce_white"
android:layout_centerVertical="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/subject_name"
android:layout_centerVertical="true"
android:textColor="@color/textColorPrimary"
android:textSize="18sp"
android:text="Commerce"
android:layout_toEndOf="@+id/subject_image"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/time"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:textColor="@color/textColorPrimary"
android:textSize="18sp"
android:text="00:00"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/top_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="5dp"
android:layout_marginBottom="10dp"
android:layout_below="@+id/top"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_info"
android:textColor="@color/navigationBarColor"
android:textSize="14sp"
android:layout_marginTop="11dp"
android:fontFamily="sans-serif"
android:text="QUESTION"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/current_question_text"
android:textColor="@color/navigationBarColor"
android:textSize="14sp"
android:fontFamily="sans-serif"
android:layout_marginStart="7dp"
android:layout_below="@+id/question_info"
android:text="17 of 50"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"
android:layout_toStartOf="@+id/pause_btn_holder"
android:padding="3dp"
android:id="@+id/goto_btn_holder"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_redo_black_24dp"
android:background="@android:color/transparent"
android:layout_gravity="center"
android:id="@+id/goto_btn"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="go to"
android:textAllCaps="true"
android:textAlignment="center"
android:layout_gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/transparent"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:padding="3dp"
android:id="@+id/pause_btn_holder"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_pause_circle_outline_black_24dp"
android:background="@android:color/transparent"
android:layout_gravity="center"
android:id="@+id/pause_btn"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="pause"
android:textAllCaps="true"
android:textAlignment="center"
android:layout_gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/transparent"/>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_alignParentBottom="true"
android:focusable="true"
android:clickable="true"
android:background="@color/colorAccent"
android:orientation="horizontal">
**this button**
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_arrow_back_black_24dp"
android:background="@android:color/transparent"
android:layout_alignParentStart="true"
android:layout_gravity="center"
android:layout_marginStart="17dp"
android:clickable="true"
android:focusableInTouchMode="true"
android:focusable="true"
android:id="@+id/previous_btn"
android:contentDescription="previous button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="previous"
android:textAllCaps="true"
android:textAlignment="center"
android:layout_alignParentStart="true"
android:layout_below="@+id/previous_btn"
android:layout_gravity="center"
android:textColor="@color/textColorPrimary"
android:background="@android:color/transparent"/>
**and this button**
<ImageButton
android:layout_width="25dp"
android:layout_height="32dp"
app:srcCompat="@drawable/ic_arrow_forward_black_24dp"
android:background="@android:color/transparent"
android:layout_alignParentEnd="true"
android:layout_gravity="center"
android:layout_marginEnd="10dp"
android:padding="3dp"
android:clickable="true"
android:focusable="true"
android:id="@+id/next_btn"
android:contentDescription="next button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="next"
android:textAllCaps="true"
android:layout_alignParentEnd="true"
android:textAlignment="center"
android:layout_gravity="center"
android:textColor="@color/textColorPrimary"
android:clickable="true"
android:focusable="true"
android:background="@android:color/transparent"
android:id="@+id/next_textView"
android:layout_below="@+id/next_btn"/>
</RelativeLayout>
<ScrollView
android:id="@+id/middle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/top_two"
android:layout_alignParentStart="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/questionView"
android:textSize="15sp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="8dp"
android:textColor="@color/navigationBarColor"
android:layout_gravity="center"
android:textAlignment="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_imageView"
android:layout_gravity="center"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="8dp"/>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="8dp">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/a_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option A"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/b_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option B"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/c_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option C"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/d_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option D"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
</RadioGroup>
</LinearLayout>
</ScrollView>
<android.support.v7.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_gravity="center"
android:maxHeight="300dp"
android:layout_below="@+id/top_two"
android:layout_alignParentStart="true"
android:layout_marginTop="36dp" />
片段就是这样 -
public class StudyKitExamFragment extends Fragment implements View.OnClickListener {
private ImageButton next_btn,previous_btn;
private ImageView question_imageView, imageView, goto_btn, pause_btn;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.study_kit_exam_layout, container, false);
goto_btn = (ImageView) view.findViewById(R.id.goto_btn);
previous_btn = (ImageView) view.findViewById(R.id.previous_btn);
pause_btn = (ImageView) view.findViewById(R.id.pause_btn);
next_btn = (ImageButton) view.findViewById(R.id.next_btn);
previous_btn.setOnClickListener(this);
next_btn.setClickable(true);
pause_btn.setOnClickListener(this);
goto_btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.next_btn:
Log.e("ExamFrgment", "pressed");
if(current_question_number<(all_questions.size()-1)){
current_question_number++;
showQuestion();
}
break;
case R.id.previous_btn:
Log.e("ExamFrgment", "pressed previous");
break;
case R.id.pause_btn:
Log.e("ExamFrgment", "pressed pause");
break;
case R.id.goto_btn:
Log.e("ExamFrgment", "pressed goto");
break;
}
}
}
因此当我在API 21和19上运行时,单击不在ImageButtons上,因为那些是我正在测试的API,我之前有过ImageView(id next_btn和previous_btn),但它们仍然无效。 ...我可以看到按钮但是当我点击没有任何反应并且没有记录任何错误(我不希望有任何错误)。
奇怪的是,点击它们时,同一布局中的ImageButtons(id pause_btn和id goto_btn)上方的两个ImageView工作。
如果需要,我可以提供更多细节。
答案 0 :(得分:1)
您将整个RelativeLayout
(@id/bottom
)与ScrollView
重叠。要么避免重叠,要么将RelativeLayout
移动到布局XML的末尾,使其成为以下所有内容的首选:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.geniusesafrica.geniuses.activities.StudyKitActivity">
<RelativeLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:elevation="2dp"
android:orientation="horizontal"
android:background="@color/colorPrimary">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/subject_image"
android:layout_marginEnd="5dp"
android:src="@drawable/commerce_white"
android:layout_centerVertical="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/subject_name"
android:layout_centerVertical="true"
android:textColor="@color/textColorPrimary"
android:textSize="18sp"
android:text="Commerce"
android:layout_toEndOf="@+id/subject_image"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/time"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:textColor="@color/textColorPrimary"
android:textSize="18sp"
android:text="00:00"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/top_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="5dp"
android:layout_marginBottom="10dp"
android:layout_below="@+id/top"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_info"
android:textColor="@color/navigationBarColor"
android:textSize="14sp"
android:layout_marginTop="11dp"
android:fontFamily="sans-serif"
android:text="QUESTION"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/current_question_text"
android:textColor="@color/navigationBarColor"
android:textSize="14sp"
android:fontFamily="sans-serif"
android:layout_marginStart="7dp"
android:layout_below="@+id/question_info"
android:text="17 of 50"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="10dp"
android:layout_toStartOf="@+id/pause_btn_holder"
android:padding="3dp"
android:id="@+id/goto_btn_holder"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_redo_black_24dp"
android:background="@android:color/transparent"
android:layout_gravity="center"
android:id="@+id/goto_btn"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="go to"
android:textAllCaps="true"
android:textAlignment="center"
android:layout_gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/transparent"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:padding="3dp"
android:id="@+id/pause_btn_holder"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_pause_circle_outline_black_24dp"
android:background="@android:color/transparent"
android:layout_gravity="center"
android:id="@+id/pause_btn"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="pause"
android:textAllCaps="true"
android:textAlignment="center"
android:layout_gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/transparent"/>
</LinearLayout>
</RelativeLayout>
<ScrollView
android:id="@+id/middle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/top_two"
android:layout_alignParentStart="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/questionView"
android:textSize="15sp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="8dp"
android:textColor="@color/navigationBarColor"
android:layout_gravity="center"
android:textAlignment="center"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/question_imageView"
android:layout_gravity="center"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="8dp"/>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_marginBottom="8dp">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/a_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option A"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/b_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option B"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/c_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option C"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/d_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="option D"
android:fontFamily="sans-serif"
android:textColor="@android:color/black"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"/>
</RadioGroup>
</LinearLayout>
</ScrollView>
<RelativeLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_alignParentBottom="true"
android:focusable="true"
android:clickable="true"
android:background="@color/colorAccent"
android:orientation="horizontal">
**this button**
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_arrow_back_black_24dp"
android:background="@android:color/transparent"
android:layout_alignParentStart="true"
android:layout_gravity="center"
android:layout_marginStart="17dp"
android:clickable="true"
android:focusableInTouchMode="true"
android:focusable="true"
android:id="@+id/previous_btn"
android:contentDescription="previous button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="previous"
android:textAllCaps="true"
android:textAlignment="center"
android:layout_alignParentStart="true"
android:layout_below="@+id/previous_btn"
android:layout_gravity="center"
android:textColor="@color/textColorPrimary"
android:background="@android:color/transparent"/>
**and this button**
<ImageButton
android:layout_width="25dp"
android:layout_height="32dp"
app:srcCompat="@drawable/ic_arrow_forward_black_24dp"
android:background="@android:color/transparent"
android:layout_alignParentEnd="true"
android:layout_gravity="center"
android:layout_marginEnd="10dp"
android:padding="3dp"
android:clickable="true"
android:focusable="true"
android:id="@+id/next_btn"
android:contentDescription="next button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13sp"
android:fontFamily="sans-serif"
android:text="next"
android:textAllCaps="true"
android:layout_alignParentEnd="true"
android:textAlignment="center"
android:layout_gravity="center"
android:textColor="@color/textColorPrimary"
android:clickable="true"
android:focusable="true"
android:background="@android:color/transparent"
android:id="@+id/next_textView"
android:layout_below="@+id/next_btn"/>
</RelativeLayout>
<android.support.v7.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_gravity="center"
android:maxHeight="300dp"
android:layout_below="@+id/top_two"
android:layout_alignParentStart="true"
android:layout_marginTop="36dp" />
</RelativeLayout>
答案 1 :(得分:0)
将您的滚动视图更改为:
<ScrollView
android:id="@+id/middle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/top_two"
android:layout_alignParentStart="true">
并将包含按钮的RelativeLout更改为:
<RelativeLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="16dp"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_alignParentBottom="true"
android:background="@color/colorAccent"
android:orientation="horizontal">