Как добавить границу вокруг линейного макета, кроме как внизу?

Как добавить границу вокруг линейного макета, кроме как внизу? 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 и работал отлично, как показано на рисунке ниже:

enter image description here

также

с галактикой s 3 работает JellyBean 4.1.2 и работает отлично, как показано на рисунке ниже:

enter image description here

Наконец, он отлично работает со всеми 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>

Итак, если вы не хотите, чтобы границы были внизу, удалите две строки о нижнем в этом пользовательском виджете, и это сделано.

И нет, я не автор этой библиотеки, ни один из его друзей; -)