2013-04-22 14 views
5

Ho un linearLayout con alcune funzioni di completamento automatico e caselle di testo. Voglio inserire una forma (rettangolo) in linearlayout. Come posso raggiungere questo obiettivo. Sono nuovo arrivato ad Android.Aggiunta di forme a 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" 
     /> 
    --> 

+0

per pianta rettangolare dinamico, controllare questo http: //www.gadgetsaint.com/tips/dynamic-square-rectangular-layouts-android/#.WRRjMvl96H s – ASP

risposta

9

È necessario utilizzare ShapeDrawable per lo sfondo del componente a cui si desidera aggiungere lo stile.

Un disegnabile di forma viene creato in XML, con la seguente sintassi (questo mostra un rettangolo, con gli angoli arrotondati, ma ci sono molti che puoi fare per personalizzarlo per apparire come vuoi). Questo file (denominato background_square.xml o altro) dovrebbe essere messo nella cartella drawable:

<?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> 

Poi, quando si desidera aggiungere a una vista, è possibile utilizzare la seguente sintassi nella tua XML:

android:background="@drawable/background_square" 
+2

Ho usato questa forma come origine di un ImageView, ma per il resto va bene! Grazie! –

+0

È possibile aggiungere questo sfondo a qualsiasi vista - ImageView, TextView, di LinearLayout (in questo caso, tutte le viste sono le stesse per quanto riguarda Android). – Booger

2

si può fare qualcosa come qui di seguito

se si desidera aggiungere rettangolo è sufficiente aggiungere layout nidificata (dire LinearLayout) all'interno del layout e impostare android:background="yourcolor" // è possibile aggiungere colore utilizzando hash valori di colore

<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> 

si modifica tutte le proprietà relative come si desidera dire dimensioni, margini, ecc.

+0

In realtà è sulla buona strada, ma non è il caso di usare un LinearLayout se non si è in grado di aggiungere un rettangolo. Usa View, invece, ha tutti gli attributi principali che useresti per disegnare un LineraLayout ed è probabilmente più leggero in termini di calcolo nel processo di layout. –

0

I May recomm creare visualizzazione personalizzata mediante l'attuazione di classe LinearLayout e sovrascrivere OnDraw() MTD per disegnare qualsiasi forma di u want.Hope questo può aiutare a andare a destra direzione

Problemi correlati