Я сделал простое приложение, чтобы проиллюстрировать мою проблему. Краткое объяснение:
Приложение содержит только одно действие. Его корневым представлением является TableLayout. Последний заполнен элементами TableRow, которые, в свою очередь, надуваются из "row.xml". Вот код:
TestActivity.java
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater=getLayoutInflater();
TableLayout table=new TableLayout(this);
setContentView(table);
TableRow row;
for(int i=0;i<3;i++){
row=(TableRow)inflater.inflate(R.layout.row, null, true);
table.addView(row);
}
}
}
В row.xml TableRow является корневым элементом, у него есть дочерний элемент - RelativeLayout. Обратите внимание на свойство RelativeLayout android: layout_width = "match_parent".
row.xml:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
>
<RelativeLayout
android:id="@+id/announcement_row_relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</RelativeLayout>
Затем я запускаю проект, открываю инструментierarchyViewer и проверяю ширину строк таблицы и соответствующие относительные макеты - я вижу 320 и 0 соответственно. Почему они не одинаковы (320 и 320), если я объявил «match_parent» в относительной компоновке? Я прилагаю 2 изображения, где вы можете наблюдать ширину элементов самостоятельно.