When creating dialog button bars or action rows in Android XML layouts, hardcoding static button widths (e.g. 150dp) breaks responsiveness across different screen sizes. In LinearLayout, setting android:layout_width="0dp" combined with android:layout_weight="1" distributes screen width equally across all child buttons.

XML Layout Implementation: Equal Width Button Bar

res/layout/button_bar.xmlxml
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="16dp">
 
    <!-- Button 1: Cancel -->
    <Button
        android:id="@+id/btnCancel"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginEnd="8dp"
        android:text="Cancel" />
 
    <!-- Button 2: Save -->
    <Button
        android:id="@+id/btnSave"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginStart="8dp"
        android:text="Save" />
 
</LinearLayout>

Crucial Performance Optimization:

  • Set `android:layout_width="0dp"`: Always set the target dimension to 0dp when applying layout_weight. Setting wrap_content forces LinearLayout to measure text dimensions first before calculating weight ratios, causing unnecessary measure passes.