Если я не до конца понимаю ваши проблемы с использованием android:padding
для обеспечения пространства вокруг вашего макета, вы сможете использовать android:layout_margin
вместо этого для достижения той же цели, но преодолеть проблемы, о которых вы упоминали. Добавление отступов создает пространство между границей представления и его содержимым. Однако добавление поля создает пространство между границей представления и его родительским элементом, поэтому содержимое по-прежнему заполняет само представление до краев. Однако вы по-прежнему не можете определить интервал просмотра в процентах непосредственно из XML ... вам нужно определить поле как статическое или применить LayoutParams
в коде Java, где вы можете рассчитать требуемый запас на основе текущего Размер экрана.
Другим вариантом является использование свойства android:layout_weight
внутри вложенного LinearLayout
. Расчетная весовая сумма может дать вам 60%, которые вы ищете непосредственно в XML. Примерно так:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:weightSum="1.0" >
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.6"
android:gravity="center"
android:weightSum="1.0">
<SurfaceView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.6" />
</LinearLayout>
</LinearLayout>
Где SurfaceView
- это местоположение вашего предварительного просмотра камеры, теперь по центру 20% экрана со всех сторон. Если вы хотите поместить вещи поверх или ниже этого предварительного просмотра, вы, очевидно, захотите поместить весь этот блок в RelativeLayout
или FrameLayout
вместе с другими компонентами.
НТН!