gpt4 book ai didi

android - 将 OnTouchListener 设置为包含在膨胀的 xml 中的多个按钮

转载 作者:行者123 更新时间:2023-11-30 03:42:34 25 4
gpt4 key购买 nike

我需要在主布局 Activity (按 3 行 5 列排列)上将此布局膨胀 15 次,并为每个 Button padButton istances 设置 OnTouchListener,这是最好的方法??我尝试膨胀布局但不知道将监听器设置为分离 ...

膨胀 drumpad.xml 的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/padLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/pad"
android:orientation="vertical"
android:padding="3dp" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|clip_horizontal|top"
android:orientation="horizontal" >

<Button
android:id="@+id/padButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/titles2" />

<Button
android:id="@+id/padSelect"
style="?android:attr/buttonStyleSmall"
android:layout_width="15dp"
android:layout_height="wrap_content" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="21dp" >

<Button
android:id="@+id/padName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:background="#0f0f0f"
android:padding="2dp"
android:text="@string/pad"
android:textColor="#dfdfdf"
android:textSize="10sp" />

</LinearLayout>

</LinearLayout>

主要布局(容器)activity_drum.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/DrumLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#999"
android:gravity="center"
android:orientation="vertical"
tools:context=".Drum" >

</LinearLayout>

最佳答案

我不确定您是否可以拥有多个具有相同 ID 的按钮。但是,您可以获得 Root View ,将其转换为 ViewGroup。使用 getChildCount()getChildAt(),并根据需要递归。像这样:

//we start from the root view
ViewGroup rootViewGroup = findViewById(R.id.rootLinearLayout);

for (int i = 0; i < this.getChildCount(); i++) {
View childView = this.getChildAt(i);

//is it a button?
if (childView instanceof Button) {
Button button = (Button) childView;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//insert here the code
}
});
}

if (childView instanceof ViewGroup) {
//iterate throught childView children
}
}

好吧,你不能毫不费力地使用这段代码并让它工作。这只是一个起点。但是……

我认为您需要重新考虑您的方法并尝试开发您自己的自定义 View ,我会使用复合 View ,看这里:

http://developer.android.com/guide/topics/ui/custom-components.html#compound

您需要一些练习,但我认为这对您的目的非常有用。

编辑

也许您可以在这里找到一些有用的信息:

Add an array of buttons to a GridView in an Android application

这里:

http://developer.android.com/guide/tutorials/views/hello-gridview.html

还有这里(鼓机):

http://mindtherobot.com/blog/420/android-beatz-making-a-drum-machine-app/

关于android - 将 OnTouchListener 设置为包含在膨胀的 xml 中的多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507356/

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