androidandroid-alertdialogandroid-themebuttonbar

Android AlertDialog remove divider between Button.Borderless in ButtonBar


I am pretty much following this tutorial and want to adapt the layout of the AlertDialog to my needs. Now I need to get rid of the divider between the two buttons in the ButtonBar. I changed the layout of my Button like this:

<style name="Widget.Sphinx.Button.Borderless.Small" parent="@android:style/Widget.Holo.Button.Borderless.Small">
        <item name="android:textColor">@color/button_textcolor</item>
        <item name="android:background">@drawable/button</item>
        <item name="android:layout_marginLeft">10dp</item>
        <item name="android:layout_marginRight">10dp</item>
        <item name="android:layout_marginBottom">10dp</item>
        <item name="android:gravity">center</item>
        <item name="android:textStyle">normal</item>
        <item name="android:dividerVertical">@android:color/transparent</item>
 </style>

enter image description here

I tried adapting the ButtonBar layout as well:

<style name="Sphinx.ButtonBar.AlertDialog" parent="@android:style/Holo.ButtonBar.AlertDialog">
        <item name="android:background">@android:color/transparent</item>
        <item name="android:dividerHorizontal">@null</item>
        <item name="android:dividerVertical">@null</item>
</style>

I tried setting to @null and @android:color/transparent without success. What is the proper way to do this?


Solution

  • As Hussein said, it is not possible to achieve it with Theme styling. So I created a custom AlertDialog like this:

    1) Create an Activity and set it's Theme to Dialog in the AndroidManifest.xml

       <activity
            android:name=".BSADialogActivity"
            android:label="@string/title_activity_dialog"
            android:theme="@android:style/Theme.Holo.Light.Dialog" >
        </activity>
    

    2) Create custom layout

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:weightSum="1">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Edit Topic"
            android:id="@+id/textView2"
            android:textColor="@color/purple"
            android:background="@color/green_light"
            android:gravity="center" />
    
        <EditText
            android:id="@+id/et_topic"
            android:inputType="text"
            android:textColor="@color/purple"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"/>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:id="@+id/bt_cancel"
                android:background="@drawable/button"
                android:src="@android:drawable/ic_menu_close_clear_cancel"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />
    
            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:id="@+id/bt_ok"
                android:background="@drawable/button"
                android:src="@android:drawable/ic_menu_save"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true" />
        </RelativeLayout>
    </LinearLayout>
    

    3) Start the Dialog

    Intent dialogIntent = new Intent(getActivity(), BSADialogActivity.class);
    dialogIntent.putExtra(BSAMainActivity.EXTRA_TOPIC, mTopic);
    getActivity().startActivityForResult(dialogIntent, SAMainActivity.REQUEST_DIALOG);
    

    4) Have a look at the result

    enter image description here

    5) Handle ImageButton events in the DialogActivity

        ImageButton ibSave = (ImageButton) findViewById(R.id.bt_ok);
        ibSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.putExtra(BSAMainActivity.EXTRA_TOPIC, etTopic.getText().toString());
                setResult(RESULT_OK, i);
                finish();
            }
        });
    

    6) Handle results in MainAcitivty

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Check which request we're responding to
        if (requestCode == REQUEST_DIALOG) {
            if (resultCode == RESULT_OK) {
                Fragment fragment = getSupportFragmentManager().findFragmentByTag(BSA_CHAT_TAG);
                if (fragment instanceof BSABluetoothChatFragment) {
                    ((BSABluetoothChatFragment) fragment).updateTopic(data.getStringExtra(EXTRA_TOPIC));
                }
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }