Я хочу, чтобы ImageView покрыл левую половину экрана, сохраняя при этом соотношение сторон и LinearLayout в одном положении с одинаковой шириной и высотой. Кто-нибудь может сказать мне, как этого добиться?
Вы можете уточнить, пожалуйста?
Можете ли вы поделиться дизайном экрана
Я бы начал с примерно такого макета:
<RelativeLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<LinearLayout
android:id = "@+id/your_linear_layout"
android:layout_alignParentEnd = "true"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:orientation = "vertical">
</LinearLayout>
<ImageView
android:id = "@+id/your_image_view"
android:layout_alignParentEnd = "true"
android:layout_width = "wrap_content"
android:layout_height = "match_parent"
android:src = "image"/>
</RelativeLayout>
Затем в вашем действии или фрагменте вам нужно будет программно установить высоту и ширину LinearLayout, чтобы они соответствовали ImageView.
ImageView iv = findViewById(R.id.your_image_view);
int ivHeight = iv.getHeight();
int ivWidth = iv.getWidth();
LinearLayout ll = findViewById(R.id.your_linear_layout);
LayoutParams llParams = ll.getLayoutParams();
llParams.height = ivHeight;
llParams.width = ivWidth
ll.setLayoutParams(llParams);
Тег «src» гарантирует, что соотношение сторон изображения сохраняется. Имейте в виду, что вам также придется обрабатывать изменение размера после поворота таким же образом.
Try this code
<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:orientation = "horizontal"
>
<RelativeLayout
android:layout_weight = "1"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<ImageView
android:layout_width = "match_parent"
android:layout_height = "match_parent" />
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"></LinearLayout>
</RelativeLayout>
<RelativeLayout
android:layout_weight = "1"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
</RelativeLayout>
</LinearLayout>
почему вы берете дополнительный относительный макет в LinearLayout
Я использовал вес 1, поэтому нужно 2 макета
используйте FrameLayout в качестве родительского макета.