Pergunta

Na minha aplicação, eu tenho 2 linear de layouts:um em cima, outro em baixo.

Eu gostaria que tudo o que está dentro de layout, o layout do superior ocupa 60% da altura da tela, e o layout de 40%.Aqui é o meu código XML:

   <?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="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:orientation="vertical" 
         android:id="@+id/layout_top">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="0.4" 
        android:id="@+id/layout_bottom">
    </LinearLayout>

</LinearLayout>

Quando esses layouts são vazios, não há problema, eles têm a boa proporção.

O problema é que se eu colocar uma pequena listview no topo do layout, por exemplo:em seguida, o layout terá o tamanho de listview e não preservar a 60/40% proporção.

Eu gostaria de que, mesmo se o meu listview é pequeno (apenas 3 item por exemplo), o layout de preservar é de 60% e assim colocar algum espaço vazio em meu listview.

Eu tentei mudar android:layout_height para match_parent mas não muda nada.

Foi útil?

Solução

Tente usar este Layout que funciona para mim,

<?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="vertical"
    android:layout_weight="1.0" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:orientation="vertical" 
         android:id="@+id/layout_top"
         android:background="#FF0000">
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:orientation="vertical"
        android:layout_weight="4" 
        android:id="@+id/layout_bottom"
        android:background="#FF00FF">
    </LinearLayout>

</LinearLayout>

O truque é configurar um layout_height="0dip" em vez de wrap_content em modo retrato e layout_with="0dip" em vez de wrap_content em modo Paisagem, você pode usar o layout-land pasta.

Outras dicas

layout_weight especificar espaço extra no layoutfot a vista.você deve tentar a medição de sua tela, como:

Display display = ((WindowManager) 
  getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int width = display.getHeight();

e, em seguida, fazer algum cálculo, como largura*0.6 e 0.4 , desta forma, seu layout sempre terá 60 40 proporção.

Espero Que Isso Ajude

tente layout_height = 0dp em ambas as crianças, LinearLayouts.Seus acontecendo porque você tem wrap_content que é, provavelmente, substituindo o layout_weight efeito.

Simplesmente no seu layout pai, substituir android:layout_weight="1.0" com android:weightSum="1.0"

Isso funciona definindo o peso soma de layout pai e os pesos dos filhos de layouts.O peso das crianças deve ser igual à soma do peso do pai.Dê uma olhada neste http://blog.stylingandroid.com/archives/312

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top