2012-12-29 15 views
5

Sto avendo questo layout xml per una visualizzazione elenco:modificare la larghezza di aspetto lineare in Android

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/menu" 
android:orientation="vertical" android:background="#2f4f4f" android:layout_width="wrap_content" android:layout_height="fill_parent"> 

    <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:background="#2f4f4f" android:cacheColorHint="#2f4f4f" android:scrollbars="none"> 
    </ListView> 
</LinearLayout> 

La disposizione lineare occupa la larghezza schermo intero per impostazione predefinita.

enter image description here

voglio cambiarlo programatically.I vuole fare qualcosa di simile:

enter image description here

Ma quando cambio larghezza LinearLayout non succede nulla, essa è ancora larghezza dello schermo pieno

LayoutInflater inflater = LayoutInflater.from(this); 
View menu = inflater.inflate(R.layout.xml_layout, null); 
menu.setLayoutParams(new LayoutParams(20,LayoutParams.WRAP_CONTENT)); 

dopo la larghezza del layout di codifica in visualizzazione elenco come:

<ListView 
    android:id="@+id/list" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:background="#2f4f4f" 
    android:cacheColorHint="#2f4f4f" 
    android:scrollbars="none" > 

</ListView> 

ottengo questo:

enter image description here

Si prega di suggerire un modo per fare questo.

risposta

4

apportare modifiche in listview come mostrato di seguito, fare il codice per la larghezza del layout in XML.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" android:background="@android:color/white"> 


<ListView 
    android:id="@+id/list" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:background="#2f4f4f" > 

</ListView> 

</LinearLayout> 

che stavi facendo wrap_content nel layout lineare e in listview fill_parent, quindi LinearLayout che sta avvolgendo ListView schermo intero vale a dire.

+0

dopo la larghezza del layout hardcoding ottengo qualcosa di diverso, vedere la mia domanda modificata. Inoltre voglio cambiare la larghezza del menu in base a una preferenza, quindi devo farlo programmaticamente. – vishesh

+0

cambiare il colore di sfondo il layout lineare bianco –

+0

aggiornato la mia risposta –

2

Se si desidera che si adatti a più dimensioni dello schermo, suggerirei di aggiungere un layout vuoto e utilizzare i pesi.

Ti piace questa:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" android:background="@android:color/white"> 


<ListView 
    android:id="@+id/list" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="3" 
    android:background="#2f4f4f" > 

</ListView> 

<LinearLayout android:layout_width="0dp" 
android:layout_height="fill_parent" 
android:layout_weight="1" 
android:orientation="horizontal" android:background="@android:color/white"> 

</LinearLayout> 

Ho appena eyeballed i pesi. Regolarli alla larghezza di cui hai bisogno. Se lo fai in questo modo, non dovrai codificare in modo rigido le dimensioni per ogni dimensione dello schermo.

Problemi correlati