Ответ здесь требует очень мало изменений. У вас была правильная большая часть макета, однако, есть одна возможность все испортить. AlignParentXXXX часто будет иметь «ложный» приоритет над параметрами LayoutXXXX. Итак, устанавливая для кнопки значение AlignParentBottom, вы сообщаете RelativeLayout, что размер кнопки не рассчитывается в размере родительского макета.
Вы можете решить эту проблему, просто удалив AlignParent = "true" из вашей кнопки. Код результата ниже и протестирован. Я верю, что это решение соответствует вашим желаниям.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/single_row"
android:padding="12dip">
<ImageView
android:id="@+id/page_image"
android:layout_marginRight="6dip"
android:layout_width="66dip"
android:layout_height="66dip"
android:layout_alignParentLeft="true"
android:src="@drawable/no_photo" />
<TextView
android:id="@+id/page_name"
style="@style/pulse_content"
android:layout_alignTop="@id/page_image"
android:layout_toRightOf="@id/page_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/page_desc"
android:layout_below="@id/page_name"
style="@style/pulse_content"
android:layout_alignLeft="@id/page_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Principal Consultant" />
<Button
android:id="@+id/follow_button"
android:layout_below="@id/author_image"
android:layout_marginTop="15dip"
android:text="Follow"
style="@style/follow_button" />
</RelativeLayout>
Я столкнулся со многими похожими проблемами с AlignParent, когда WrapContent находился в Parent. Расположение сверху и снизу создает нежелательное поведение, если оно не подготовлено к нему. Я считаю, что, в общем, лучше всего использовать только один или другой (если он вообще есть) и расположить остальные выше или ниже этого.