2

I am using a RelativeLayout with some items like EditTexts, Buttons to set a Custom ActionBar view. The problem is that I am unable to get the references of the items which are there in that custom view.

Here is the custom view for ActionBar

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/actionbar_background"
android:gravity="fill_horizontal|center_horizontal" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="center_horizontal"
        android:paddingTop="10dp" >

        <ImageButton
            android:id="@+id/ab_home"
            android:layout_width="47dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:src="@drawable/home" />
    </LinearLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:alpha="0.2"
        android:background="@color/left_menu_background" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="6"
        android:orientation="horizontal" >

        <LinearLayout
            android:id="@+id/ab_action_search"
            android:layout_width="match_parent"
            android:padding="7dp"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:visibility="gone" >

            <EditText
                android:id="@+id/et_search"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/rounded_edittext"
                android:drawablePadding="8dp"
                android:drawableRight="@drawable/action_search_light"
                android:hint="Search"
                android:imeOptions="actionSearch"
                android:paddingLeft="5dp"
                android:singleLine="true"
                android:cursorVisible="false"
                android:textColor="#000000"
                android:textSize="15dp" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ab_action_buttons"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:paddingTop="10dp"
            android:visibility="visible" >

            <Button
                android:id="@+id/btn_customAB_font"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@null"
                android:text="@string/icon_font"
                android:textColor="#FFFFFF"
                android:textSize="10dp" />

            <Button
                android:id="@+id/btn_customAB_tasks"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@null"
                android:text=""
                android:textColor="#FFFFFF"
                android:textSize="25dp" />

            <Button
                android:id="@+id/btn_customAB_search"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@null"
                android:clickable="true"
                android:text="@string/icon_search"
                android:textColor="#FFFFFF"
                android:textSize="25dp" />
        </LinearLayout>
    </LinearLayout>

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:alpha="0.2"
        android:background="@color/left_menu_background" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:paddingTop="10dp" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:src="@drawable/ic_action_user" />
    </LinearLayout>
</LinearLayout>

</RelativeLayout>

Here is how I inflate and setCustomView of the ActionBar.

ActionBar ab = getSupportActionBar();

    ab.setDisplayShowCustomEnabled(true);
    ab.setDisplayHomeAsUpEnabled(false);
    ab.setDisplayShowHomeEnabled(false);
    ab.setDisplayUseLogoEnabled(false);
    ab.setCustomView(R.layout.custom_actionbar);

inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
customActionBarView = inflater.inflate(R.layout.custom_actionbar,null);
ImageButton ib = (ImageButton) customActionBarView.findViewById(R.id.ab_home); 

ib.setOnClickListener(new OnClickListener() {
    @Override
        public void onClick(View v) {
        Log.d(TAG, "Home Clicked");
        }
    });

This log statement is never run. I Think I am using the findViewById() in a wrong way to reference the Buttons.

Any help would greatly appreciated.

Anas Azeem
  • 2,820
  • 3
  • 24
  • 37
  • just use ImageButton ib = (ImageButton)findViewById(R.id.ab_home); see this ans---->http://stackoverflow.com/a/16079425/1168654 – Dhaval Parmar Aug 12 '13 at 10:04
  • OMG, it was just a minor thing and I was stuck on it for like 4 hours. The modification did it, Thank you You can add it as an answer I'll accept it BTW can you tell why referencing it using the CustomActionBar did not do the job? – Anas Azeem Aug 12 '13 at 10:08

1 Answers1

4

As mentioned by @Dhawal Sodha. Instead of using

ImageButtonib=(ImageButton)CustomActionBarView.findViewById(R.id.ab_home);

Use

ImageButtonib=(ImageButton)findViewById(R.id.ab_home);

Anas Azeem
  • 2,820
  • 3
  • 24
  • 37