gpt4 book ai didi

android - 如何在包含的布局上设置 onClickListener?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:24 24 4
gpt4 key购买 nike

我有一个带有 ImageButton 的布局,我将它包含在其他几个布局中。

图像按钮布局:

call_cancelled.xml

<LinearLayout 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" >

<LinearLayout
android:id="@+id/callEndLayout"
android:layout_width="70dp"
android:layout_height="70dp"
android:height="70dip"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp" >

<ImageButton
android:id="@+id/phoneEnd"
android:layout_width="63dp"
android:layout_height="63dp"
android:paddingBottom="7dp"
android:background="@drawable/phone_cancelled" />

</LinearLayout>

我的包括:

  <include
android:id="@+id/includeCallEnd0"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignBottom="@+id/include"
android:layout_alignParentRight="true"
layout="@layout/call_cancelled" />

为此,我在按下时需要一个 onClickListener。我试过这个:

View endcall0 = (View) findViewById(R.id.includeCallEnd0);

endcall0.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

Intent callIntent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(callIntent);

int id = viewFlipper.getDisplayedChild();

if (id == 0) {
hideSoftKeyboard();
}
}
});

但它不起作用。有人知道解决方案吗?

最佳答案

findViewById(R.id.includeCallEnd0) 替换为 findViewById(R.id.includeCallEnd0).findViewById(R.id.phoneEnd) 它应该可以工作

因为您想在 ImageButton 而不是整个布局上设置点击监听器


使用以下函数设置一次 OnClickListener:

private static void applyListener(View child, OnClickListener listener) {
if (child == null)
return;

if (child instanceof ViewGroup) {
applyListener((ViewGroup) child, listener);
}
else if (child != null) {
if(child.getId() == R.id.phoneEnd) {
child.setOnClickListener(listener);
}
}
}

private static void applyListener(ViewGroup parent, OnClickListener listener) {
for (int i = 0; i < parent.getChildCount(); i++) {
View child = parent.getChildAt(i);
if (child instanceof ViewGroup) {
applyListener((ViewGroup) child, listener);
} else {
applyListener(child, listener);
}
}
}

使用applyListener(rootView, yourOnClickListener);

关于android - 如何在包含的布局上设置 onClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19226259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com