Добавление формы в Android LinearLayout

У меня есть linearLayout с автозаполнением и текстовыми полями. Я хочу вставить форму (прямоугольник) в линейное расположение. Как я могу достичь этого. Я новичок в Android.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"    
    android:padding="5dp"
    android:id="@+id/layout">

    <AutoCompleteTextView android:id="@+id/autocompleteCountry"
      android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/CONTRY_LABEL"
       />
    <AutoCompleteTextView android:id="@+id/locationAutoCompleteFrom"
      android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/from"
        android:visibility="gone"
       />
   <AutoCompleteTextView android:id="@+id/locationAutoCompleteTO"
      android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to"
        android:visibility="gone"
       />
 <!--    <Button android:id="@+id/buttonRoute"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/buttonRouteText"
       android:enabled="false"
       android:clickable="true"
       />
   -->

3 ответа

Решение

Вы должны использовать ShapeDrawable для фона компонента, к которому вы хотите добавить стиль.

Рисуемая форма создается в XML со следующим синтаксисом (здесь показан прямоугольник со скругленными углами, но есть много способов, которые можно настроить, чтобы выглядело так, как вы хотите). Этот файл (с именем background_square.xml или любым другим) должен быть помещен в вашу папку для рисования:

 <?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="5dp" />
    <solid
        android:color="@color/primary_grey" /> 
</shape>

Затем, когда вы захотите добавить его в представление, вы можете использовать следующий синтаксис в вашем XML:

android:background="@drawable/background_square"

Вы можете сделать что-то вроде ниже

если вы хотите добавить прямоугольник, просто добавьте вложенный макет (скажем, линейный макет) в свой макет и установите android:background="yourcolor" // Вы можете добавить цвет используя значения цвета хеша

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"    
android:padding="5dp"
android:id="@+id/layout">

<AutoCompleteTextView android:id="@+id/autocompleteCountry"
  android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/CONTRY_LABEL"
   />
<AutoCompleteTextView android:id="@+id/locationAutoCompleteFrom"
  android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/from"
    android:visibility="gone"
   />
//suppose you want to add your rectangle here
<LinearLayout 
android:id="@+id/rectangle"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"    
android:background="yourcolor"
>
</LinearLayout>

Вы изменяете все относительные свойства, как хотите, например, размер, поля и т. д

Я могу порекомендовать создать собственное представление путем реализации класса Linearlayout и переопределить ondraw() mtd, чтобы нарисовать любую фигуру, которую вы хотите. Надеюсь, что это может помочь в правильном направлении

Другие вопросы по тегам