Как добавить границу вокруг линейного макета, кроме как внизу? 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>
Итак, если вы не хотите, чтобы границы были внизу, удалите две строки о нижнем в этом пользовательском виджете, и это сделано.
И нет, я не автор этой библиотеки, ни один из его друзей; -)
