自定义标题android onClick,错误的id调用

时间:2015-10-23 10:53:31

标签: android onclick title

我已为自己的活动实施了自定义标题:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#3a5894" >

   <LinearLayout
       android:layout_width="50dp"
       android:layout_height="100dp"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:orientation="vertical"
       android:id="@+id/left_button_title_bar_main_content_fragment"
       android:background="#90C3D4"
       android:onClick="onClickTitleBar">

       <ImageView android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:background="#90C3D4"/>

   </LinearLayout>


   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:orientation="vertical"
       android:id="@+id/center_textview_title_bar" 
       android:onClick="onClickTitleBar">

       <TextView
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:gravity="center"
           android:paddingTop="15dp"
           android:text="Quick Notes"
           android:textColor="#ffffff"/>

    </LinearLayout>

</RelativeLayout>

我的活动实施:

public class MainActivity extends Activity implements OnClickListener {



    private LinearLayout leftButtonInTitle;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // custom title
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        // full screen activity
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);



        // custom title bar
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_bar);


        leftButtonInTitle = (LinearLayout) findViewById(R.id.left_button_title_bar_main_content_fragment);

以及我想要处理的方法点击

public void onClickTitleBar(View v) {
        int id = v.getId();

        Log.e("","id :  "+id);
        Log.e("","button id:  " + R.id.left_button_title_bar_main_content_fragment);
}

我已经注销了v.getId和linearlayout实际ID。 我已经意识到这些ID并不相同。

这是日志:

E/﹕ id   2131493001
E/﹕ button id:  2131493000

正如您所看到的,数字不一样。

知道为什么会这样吗?

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

xml文件中,两个LinearLayout的onClick属性的值相同。 可能是因为你正在获得不同的ID。

尝试为两个LinearLayouts提供不同的onClick值。

答案 1 :(得分:0)

您已经在ID为R.id.center_textview_title_bar的LinearLayout上设置了onClick。因为它在RelativeLayout中,并且没有设置约束,并且它是&#34;更高的&#34;按照孩子的顺序,它将显示在ID为R.id.left_button_title_bar_main_content_fragment的LinearLayout的顶部,它将取代所有点击代替标题栏。

要解决此问题,请删除

android:onClick="onClickTitleBar"

来自ID为R.id.center_textview_title_bar

的LinearLayout