да, вы можете сделать это с помощью LinearLayout - android: weightSum , вот пример для одной строки,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="0.1" >
<TextView
android:text="left"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.33" />
<Button
android:text="right"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.67" />
</LinearLayout>
РЕДАКТИРОВАТЬ:
Я вижу, что вы не поняли, как его использовать,
скажем, у вас есть два макета, (main.xml и list_template.xml)
main.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/mainLayout"
>
</LinearLayout>
</ScrollView>
list_template.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="100" >
<TextView
android:text="left"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="33"
android:id="@+id/list_textView" />
<Button
android:text="right"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="67"
android:id="@+id/list_button" />
</LinearLayout>
list_template - это шаблон макета для одной строки списка, мы его раздуем. Как?
public class StackoverflowActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);
LayoutInflater li = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < 5; i++){
View tempView = li.inflate(R.layout.list_template, null);
TextView list_textView = (TextView) tempView.findViewById(R.id.list_textView);
list_textView.setText("TextView"+i);
Button list_button = (Button) tempView.findViewById(R.id.list_button);
list_button.setText("Button"+i);
list_button.setId(i);
list_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Button clicked
Toast.makeText(StackoverflowActivity.this, "Button" + v.getId() + " clicked", Toast.LENGTH_SHORT).show();
}
});
mainLayout.addView(tempView);
}
}
}