Как добавить границу вокруг линейного макета, кроме как внизу? LinearLayout должен иметь границу слева, сверху и справа, но не внизу.
Как добавить границу вокруг линейного макета, кроме как внизу?
Ответ 1
Создайте XML файл с именем border.xml в выпадающей папке и поместите в него следующий код.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#FF0000" />
</shape>
</item>
<item android:left="5dp" android:right="5dp" android:top="5dp" >
<shape android:shape="rectangle">
<solid android:color="#000000" />
</shape>
</item>
</layer-list>
Затем добавьте фон в свой линейный макет, например:
android:background="@drawable/border"
EDIT:
Этот XML был протестирован с помощью галактики с GingerBread 2.3.3 и работал отлично, как показано на рисунке ниже:
также
с галактикой s 3 работает JellyBean 4.1.2 и работает отлично, как показано на рисунке ниже:
Наконец, он отлично работает со всеми API
ИЗМЕНИТЬ 2:
Это также можно сделать, используя штрих, чтобы сохранить фон прозрачным, сохраняя при этом границу, кроме нижнего, с помощью следующего кода.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:left="0dp" android:right="0dp" android:top="0dp"
android:bottom="-10dp">
<shape android:shape="rectangle">
<stroke android:width="10dp" android:color="#B22222" />
</shape>
</item>
</layer-list>
надеюсь, что эта помощь.
Ответ 2
Сохраните этот xml и добавьте в качестве фона для линейного макета....
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="4dp" android:color="#FF00FF00" />
<solid android:color="#ffffff" />
<padding android:left="7dp" android:top="7dp"
android:right="7dp" android:bottom="0dp" />
<corners android:radius="4dp" />
</shape>
Надеюсь, это поможет!:)
Ответ 3
Кенни прав, просто хочу прояснить некоторые вещи.
- Создайте файл
border.xml
и поместите его в папкуres/drawable/
-
добавить код
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="4dp" android:color="#FF00FF00" /> <solid android:color="#ffffff" /> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="0dp" /> <corners android:radius="4dp" /> </shape>
-
установите заднюю поверхность, как
android:background="@drawable/border"
, где бы вы ни находились.
Моя первая не работала, поэтому я помещаю border.xml
в неправильную папку!
Ответ 4
Вот ссылка Github для легкой и очень простой интеграции библиотеки, которая позволяет вам играть с границами, как вы хотите, для любого виджета, который вы хотите, просто на основе виджета FrameLayout.
Вот быстрый пример кода, чтобы вы могли видеть, насколько это просто, но вы найдете больше информации о ссылке.
<com.khandelwal.library.view.BorderFrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:leftBorderColor="#00F0F0"
app:leftBorderWidth="10dp"
app:topBorderColor="#F0F000"
app:topBorderWidth="15dp"
app:rightBorderColor="#F000F0"
app:rightBorderWidth="20dp"
app:bottomBorderColor="#000000"
app:bottomBorderWidth="25dp" >
</com.khandelwal.library.view.BorderFrameLayout>
Итак, если вы не хотите, чтобы границы были внизу, удалите две строки о нижнем в этом пользовательском виджете, и это сделано.
И нет, я не автор этой библиотеки, ни один из его друзей; -)