请问:
      做了一个组合控件,里面包含了4个Button,在某个画面中调用。我要在画面上对组合控件中的某个按钮添加事件,怎么获取这个子控件呢?

解决方案 »

  1.   

    findViewById   不行么??
      

  2.   

    TestActivity : 要在这里面获取到LinearLayout_Button中的Button
    public class TestActivity extends Activity { private LinearLayout_Button linLayBtn; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); linLayBtn= (LinearLayout_Button) findViewById(R.id.linLayBtn);

    //获取LinearLayout_Button中的Button
    }
    }
    main.xml<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="@android:color/white">
    <TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:text="@string/hello"
    android:textColor="@android:color/black" android:layout_weight="1" />

    <com.test.LinearLayout_Button
    android:id="@+id/linLayBtn"
    android:layout_width="fill_parent" android:layout_height="wrap_content">
    </com.test.LinearLayout_Button>
    </LinearLayout>
    组合控件:public class LinearLayout_Button extends LinearLayout {

    public LinearLayout_Button(Context context) {
    this(context, null);
    } public LinearLayout_Button(Context context, AttributeSet attrs) {
    super(context, attrs); LayoutInflater.from(getContext()).inflate(
    R.layout.linlay_btn, this);
    }
    }
    组合控件XML:<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button android:text="Button1" android:id="@+id/button1"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <Button android:text="Button2" android:id="@+id/button2"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <Button android:text="Button3" android:id="@+id/button3"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <Button android:text="Button4" android:id="@+id/button4"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></Button></LinearLayout>
      

  3.   

    给你的组合控件的最上面一层就是LinearLayout层加个ID,如:linearyayoutLinearLayout_Button layout = (LinearLayout_Button) getLayoutInflater().inflate(R.layout.linearyayout, null);
    Button btn=(Button)findViewById(...);
    .....
      

  4.   

    组合控件的最上面一层就是LinearLayout层加个ID,如:linearyayoutLinearLayout_Button layout = (LinearLayout_Button) getLayoutInflater().inflate(R.layout.linearyayout, null);加了之后 也不能这样取 R.layout.linearyayout 啊,只能 R.id.linearyayout。还是会报错哦
      

  5.   

    layout.getChildView(1).findviewbyid(r.id.button)
      

  6.   


    linearyayout应为layout文件下地xml的名字  R.layout.linearyayoutButton btn = (Button ) layout.findViewById(R.id.btn);
      

  7.   

    多谢大家,我搞定了。
    就在自定义控件的类里面加个 GetButton 方法就行了。明天结贴!