У меня есть элемент пользовательского интерфейса, с которым я работаю в моем приложении Android, который имеет пользовательскую ширину.Элемент пользовательского интерфейса, по сути, представляет собой блок с двумя зелеными кружками - один кружок слева от блока, а другой кружок справа от блока.
Я хочу иметь возможность программно устанавливать ширину всего элемента пользовательского интерфейса.Круги всегда должны иметь постоянный размер, а затем блок, расположенный посередине, должен иметь размер, чтобы заполнить оставшееся пространство.
Вот что у меня сейчас есть:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<View
android:background="@drawable/green_circle"
android:id="@+id/left_green_circle"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
/>
<View
android:background="@drawable/blue_rectangle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
/>
<View
android:background="@drawable/green_circle"
android:id="@+id/right_green_circle"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
/>
</LinearLayout>
Затем я устанавливаю параметры макета просмотра в коде так:
int layoutLeft = block_x_position - green_circle_width;
int layoutWidth = block_width + (green_circle_width * 2);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(layoutWidth, block_height);
layoutParams.setMargins(layoutLeft, block_y_position, 0, 0);
this.setLayoutParams(layoutParams);
this.requestLayout();
Я использую RelativeLayoutв приведенном выше коде, потому что родительским элементом всего этого элемента View является RelativeLayout.К сожалению, я не получаю ожидаемых результатов.Моя переменная "block_width" - "40dp", а моя переменная "green_circle_width" - "20dp".Вот что я получаю:
![enter image description here](https://i.stack.imgur.com/2EDrM.png)
Я пытался использовать «wrap_content» вместо «match_parent» в моем XML для просмотра, но это никак не влияет.Любая идея, почему мой блок расширяется за ширину, которую я бы хотел увеличить?
Спасибо за любую помощь.