我正在研究约束布局,该布局有两个图像按钮,不同的想法彼此相对放置,如下所示:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- here are some views -->
<ImageButton
android:id="@+id/openCamera"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@null"
android:clickable="true"
android:contentDescription="@string/camera_button"
android:focusable="true"
android:scaleX="3.7"
android:scaleY="3.7"
android:adjustViewBounds="true"
app:layout_constraintBottom_toTopOf="@id/text"
app:layout_constraintEnd_toStartOf="@id/openGallery"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/logoText"
app:srcCompat="@drawable/ic_camera_icon" />
<ImageButton
android:id="@+id/openGallery"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@null"
android:adjustViewBounds="true"
android:clickable="true"
android:contentDescription="@string/gallery_button"
android:focusable="true"
android:scaleX="3.7"
android:scaleY="3.7"
app:layout_constraintBottom_toTopOf="@id/text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/openCamera"
app:layout_constraintTop_toBottomOf="@id/logoText"
app:srcCompat="@drawable/ic_gallery_icon" />
<!-- other views -->
</android.support.constraint.ConstraintLayout>
这里的问题是,当我单击以太按钮时,我得到第二个按钮的 id (就像交换位置时,我总是得到第二个 id )。
我如何解决此问题?
-我尝试过的是:
未实现View.OnClickListener
接口,并检查了它仍然存在相同的问题。
我在相对布局方面做得很好,但是层次结构很多,所以我切换到约束布局。
java代码是:
@Override
protected void onCreate(Bundle savedInstanceState) {
ImageButton openCameraButton = (ImageButton) findViewById(R.id.openCamera);
ImageButton openGalleryButton = (ImageButton) findViewById(R.id.openGallery);
openCameraButton.setOnClickListener(this);
openGalleryButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.openCamera:
someMethod();
break;
case R.id.openGallery:
antherMethod();
break;
default:
Log.v(TAG, "HOW YOU GET THERE!!!");
break;
}
}
我从调试模式中得到了什么: enter image description here
答案 0 :(得分:0)
我看到了这段代码
<ImageButton
android:id="@+id/openCamera"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@null"
android:clickable="true"
android:contentDescription="@string/camera_button"
android:focusable="true"
android:onClick="onClick"
android:scaleX="3.7"
android:scaleY="3.7"
android:adjustViewBounds="true"
app:layout_constraintBottom_toTopOf="@id/text"
app:layout_constraintEnd_toStartOf="@id/openGallery"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/logoText"
app:srcCompat="@drawable/ic_camera_icon" />
尝试删除此行
android:onClick="onClick"
希望获得帮助
答案 1 :(得分:0)
这是因为回调方法onClick已链接到第一个按钮。 从xml删除行android:onClick =“ onClick”
答案 2 :(得分:0)
现在这个答案对我来说适用于ConstrainLayout
我所做的是为“图像”按钮添加了大于0的宽度(在这里为100 )。不知道为什么,但是现在可以使用!!!
<ImageButton
android:id="@+id/openCamera"
android:layout_width="100dp"
android:layout_height="0dp"
android:background="@null"
android:clickable="true"
android:contentDescription="@string/camera_button"
android:focusable="true"
android:scaleX="3.7"
android:scaleY="3.7"
android:adjustViewBounds="true"
app:layout_constraintBottom_toTopOf="@id/text"
app:layout_constraintEnd_toStartOf="@id/openGallery"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/logoText"
app:srcCompat="@drawable/ic_camera_icon" />
<ImageButton
android:id="@+id/openGallery"
android:layout_width="100dp"
android:layout_height="0dp"
android:background="@null"
android:adjustViewBounds="true"
android:clickable="true"
android:contentDescription="@string/gallery_button"
android:focusable="true"
android:scaleX="3.7"
android:scaleY="3.7"
app:layout_constraintBottom_toTopOf="@id/text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/openCamera"
app:layout_constraintTop_toBottomOf="@id/logoText"
app:srcCompat="@drawable/ic_gallery_icon" />
希望有人能提供更好的答案或解决此问题。