Попробуйте использовать горизонтальный линейный макет с шириной match_parent и weightsum 9,
после динамического добавления кнопок внутри этого макета установите их вес 1 и ширину 0dp. Это должно работать.
// Я реализовал это для вас
Вот код Java:
Button[] buttons=new Button[9];
LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout);
for (int i=0;i<=8;i++){
buttons[i]=new Button(MainActivity.this);
buttons[i].setText("Button "+(i+1));
buttons[i].setLayoutParams (new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1));
ll.addView(buttons[i], new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT,1));
}
Вот макет:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:orientation="horizontal"
android:id="@+id/buttonlayout"
android:weightSum="9"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
</RelativeLayout>