Вам действительно нужно сделать это программно?
Просто учитывая заголовок: вы можете использовать ShapeDrawable в качестве android: background ...
Например, давайте определим res/drawable/my_custom_background.xml
как:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="2dp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<stroke
android:width="1dp"
android:color="@android:color/white" />
</shape>
и определите android: background = "@ drawable / my_custom_background".
Я не проверял, но это должно работать.
Обновление:
Я думаю, что лучше использовать возможности извлекаемых ресурсов в форме XML, если это соответствует вашим потребностям. В проекте «с нуля» (для android-8) определите res / layout / main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/border"
android:padding="10dip" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World, SOnich"
/>
[... more TextView ...]
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World, SOnich"
/>
</LinearLayout>
и res/drawable/border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="5dip"
android:color="@android:color/white" />
</shape>
Сообщается о работе на пряничном устройстве. Обратите внимание, что вам нужно будет связать android:padding
LinearLayout со значением android:width
shape / stroke. Пожалуйста, не используйте @android:color/white
в вашем окончательном приложении, а скорее проект, определенный цвет.
Вы можете применить android:background="@drawable/border" android:padding="10dip"
к каждому из LinearLayout из предоставленного вами образца.
Что касается других ваших постов, связанных с отображением некоторых кругов в качестве фона LinearLayout, я играю с прорисовываемыми ресурсами Inset / Scale / Layer ( см. Drawable Resources для получения дополнительной информации), чтобы получить что-то работающее для отображения идеального круги на фоне LinearLayout, но на данный момент не удалось ...
Ваша проблема заключается в использовании getBorder.set{Width,Height}(100);
. Почему вы делаете это методом onClick?
Мне нужна дополнительная информация, чтобы не упустить момент: почему вы делаете это программно? Вам нужно динамическое поведение? Ваши входные данные в формате png или ShapeDrawable приемлемы? и т.д.
Продолжение следует (возможно, завтра и как только вы предоставите больше информации о том, чего хотите достичь)…