android自定义控件按钮无法点击

TitleLayout.java

package com.example.uicustomviews;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class TitleLayout extends LinearLayout {

    public TitleLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.title, this);
        Button titleBack = (Button) findViewById(R.id.title_back);
        Button titleEdit = (Button) findViewById(R.id.title_edit);
        titleBack.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ((Activity) getContext()).finish();
            }
        });
        titleEdit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "You clicked Edit button", Toast.LENGTH_SHORT).show();
            }
        });
    }
} 

MainActivity.java

package com.example.uicustomviews;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }
}

title.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bg" >

    <Button
        android:id="@+id/title_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:background="@drawable/back_bg"
        android:text="Back"
        android:textColor="#fff" />

    <TextView
        android:id="@+id/title_text"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="center"
        android:text="This is Title"
        android:textColor="#fff"
        android:textSize="22sp" />

    <Button
        android:id="@+id/title_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:background="@drawable/edit_bg"
        android:text="Edit"
        android:textColor="#fff" />

</LinearLayout>

activity_main.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <include layout="@layout/title" />

    <com.example.uicustomviews.TitleLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    </com.example.uicustomviews.TitleLayout>

</LinearLayout>

求助 折腾了好久 导入别人的工程 上面这四份代码完全一样
别人的点击有反应 自己的没反应

http://bbs.csdn.net/topics/380233639

LZ的自定义控件没有实现所有的构造函数,LinearLayout 在API17以后一共有4个构造函数。

 public TitleLayout(Context context){
    super(context);
    init();
}

public TitleLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
                init();
    }

// 还有2个需要在构造函数里调用init

private void init(){
LayoutInflater.from(getContext()).inflate(R.layout.title, this);
        Button titleBack = (Button) findViewById(R.id.title_back);
        Button titleEdit = (Button) findViewById(R.id.title_edit);
        titleBack.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                ((Activity) getContext()).finish();
            }
        });
        titleEdit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getContext(), "You clicked Edit button", Toast.LENGTH_SHORT).show();
            }
        });
}

LayoutInflater.from(context).inflate(R.layout.title, this);这种写法不推荐。
你这样写,也就是把一个title.xml里的那个LinearLayout以child的方式加入TitleLayout,相当于有两层linearayout。
你可以直接在main布局文件里使用TitleLayout,把它当做LinearLayout一样使用就行,如下main.xml
这就少了两层LinearLayout,然后你那个TitleLayout也要做调整。
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg" >

<Button
    android:id="@+id/title_back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dip"
    android:background="@drawable/back_bg"
    android:text="Back"
    android:textColor="#fff" />

<TextView
    android:id="@+id/title_text"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:gravity="center"
    android:text="This is Title"
    android:textColor="#fff"
    android:textSize="22sp" />

<Button
    android:id="@+id/title_edit"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="5dip"
    android:background="@drawable/edit_bg"
    android:text="Edit"
    android:textColor="#fff" />

使用两个参数的构造方法

把要点击的控件onClick设为true,不行的话再把focusable和focusableTouchMode(大概是这个名字)属性也设为true试试

楼主,解决没有,我按照上面的方法也没有用。~~