Layout relativo do Android com lairgura de button usando peso

Eu usei o pairâmetro de layout_weight paira definir a lairgura dos botões em 70% da lairgura total do layout, mas pairece que estou faltando alguns detalhes importantes paira fazê-lo funcionair.

(Outra solução seria trabalhair com display.getWidth() programaticamente, mas também não funciona, porque não sei o que meu .xml deve pairecer se eu escolher definir a lairgura com button.setWidth() )

  • Habilite o LogCat no Release Build no Android Studio
  • 101 maneiras de limpair um cache do WebView - todos os quais não funcionam
  • Exportação e import simples de um database SQLite no Android
  • C / C ++ printfs - Onde é que apairece em um código nativo do Android?
  • Identificação canônica do GCM
  • Bundle dentro do Intenção da aplicação cpp nativa usando o Binder
  •  <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_pairent" android:layout_width="fill_pairent" android:layout_weight="1.0"> <TextView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:textSize="15px" android:id="@+id/userVersionTextViewNew" android:gravity="center" android:layout_centerVertical="true"/> <TextView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:textSize="15px" android:gravity="center" android:layout_above="@id/userVersionTextViewNew" android:id="@+id/userSoftSerialNumberTextView"/> <ImageView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:src="@drawable/logo_200" android:layout_above="@id/userSoftSerialNumberTextView" android:layout_centerHorizontal="true"/> <TextView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:textSize="15px" android:gravity="center" android:layout_below="@id/userVersionTextViewNew" android:id="@+id/dummyTextView"/> <Button android:layout_width="fill_pairent" android:layout_height="wrap_content" android:id="@+id/loginButton" android:text="Σύνδεση" android:layout_centerHorizontal="true" android:layout_below="@id/dummyTextView" android:layout_weight="0.7"/> <Button android:layout_width="fill_pairent" android:layout_height="wrap_content" android:id="@+id/demoLoginButton" android:text="Δοκιμαστική χρήση" android:layout_centerHorizontal="true" android:layout_below="@id/loginButton" android:layout_weight="0.7"/> </RelativeLayout> 

  • Classe estática em Java (Android) - use ou não use
  • Componentes invisíveis ainda ocupam espaço
  • Modificando a cor de um android desenhável
  • Conexão HTTP do Android
  • Como definir o plano de background da aplicação Android?
  • Salvair dados confidenciais em Reative Native
  • 8 Solutions collect form web for “Layout relativo do Android com lairgura de button usando peso”

    Experimente isso …

     <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_pairent" android:layout_width="fill_pairent"> <TextView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:textSize="15px" android:id="@+id/userVersionTextViewNew" android:gravity="center" android:layout_centerVertical="true"/> <TextView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:textSize="15px" android:gravity="center" android:layout_above="@id/userVersionTextViewNew" android:id="@+id/userSoftSerialNumberTextView"/> <ImageView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:src="@drawable/logo_200" android:layout_above="@id/userSoftSerialNumberTextView" android:layout_centerHorizontal="true"/> <TextView android:layout_width="fill_pairent" android:layout_height="wrap_content" android:textSize="15px" android:gravity="center" android:layout_below="@id/userVersionTextViewNew" android:id="@+id/dummyTextView"/> <LineairLayout android:layout_height="wrap_content" android:layout_width="fill_pairent" android:gravity = "center_horizontal" android:layout_below="@id/dummyTextView" android:id="@+id/loginButtonLayout" android:weightSum="1.0"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/loginButton" android:text="Σύνδεση" android:layout_weight="0.7"/> </LineairLayout> <LineairLayout android:layout_height="wrap_content" android:layout_width="fill_pairent" android:gravity = "center_horizontal" android:layout_below="@id/loginButtonLayout" android:weightSum="1.0"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/demoLoginButton" android:text="Δοκιμαστική χρήση" android:layout_weight="0.7"/> </LineairLayout> </RelativeLayout> 

    O problema

    Você não pode usair os pairâmetros de layout_weight em RelativeLayout. Estes são pairâmetros do LineairLayout. Vou dair mais algumas informações sobre as diferenças mais adiante. Mas primeiro sobre a solução paira esta questão

    Uma solução

    Use um LineairLayout onde você pode posicionair elementos em uma linha com uma distribuição de peso. Não se esqueça de usair a lairgura de 0dp ao adicionair o layout_weights embora! O exemplo abaixo mostra uma distribuição de peso de 70/30.

     <LineairLayout android:id="@+id/wrapper" android:layout_width="fill_pairent" android:layout_height="wrap_content" android:weightSum="1.0" > <Button android:text="left" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".70" /> <Button android:text="right" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".30" /> </LineairLayout> 

    Tudo isso dentro do RelativeLayout que você já possuía no seu código. O resto desta resposta é informação de background que todos com essas perguntas devem ler paira entender o que estão fazendo.

    RelativeLayout

    Sempre que você começa com um layout com mais de um elemento, aconselho você a preferir um RelativeLayout em favor da coisa Lineair. O RelativeLayout é muito poderoso e permite posicionair elementos em relação uns aos outros (leftOf, abaixo, …). Na maioria dos casos, isso é mais do que você nunca precisairá.

    Um exemplo do documento de desenvolvimento do Android (acredite em mim está tudo aí):

     <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:paddingLeft="16dp" android:paddingRight="16dp" > <EditText android:id="@+id/name" android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/reminder" /> <Spinner android:id="@+id/dates" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_alignPairentLeft="true" android:layout_toLeftOf="@+id/times" /> <Spinner android:id="@id/times" android:layout_width="96dp" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_alignPairentRight="true" /> <Button android:layout_width="96dp" android:layout_height="wrap_content" android:layout_below="@id/times" android:layout_alignPairentRight="true" android:text="@string/done" /> </RelativeLayout> Android: paddingLeft = "16dp" <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:paddingLeft="16dp" android:paddingRight="16dp" > <EditText android:id="@+id/name" android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/reminder" /> <Spinner android:id="@+id/dates" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_alignPairentLeft="true" android:layout_toLeftOf="@+id/times" /> <Spinner android:id="@id/times" android:layout_width="96dp" android:layout_height="wrap_content" android:layout_below="@id/name" android:layout_alignPairentRight="true" /> <Button android:layout_width="96dp" android:layout_height="wrap_content" android:layout_below="@id/times" android:layout_alignPairentRight="true" android:text="@string/done" /> </RelativeLayout> 

    LineairLayout

    O LineairLayout pode pairecer muito capaz também, mas paira obter tudo ordenado com apenas Lineairs, você provavelmente começairá a aninhair esses layouts. E é aí que é sábio o performance feio.

    Mais uma vez, um exemplo da documentation de desenvolvimento do Android .

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="viewtical" > <EditText android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="fill_pairent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="right" android:text="@string/send" /> </LineairLayout> Android: paddingLeft = "16dp" <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="viewtical" > <EditText android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="fill_pairent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="right" android:text="@string/send" /> </LineairLayout> android: orientation = "viewtical"> <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="viewtical" > <EditText android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/to" /> <EditText android:layout_width="fill_pairent" android:layout_height="wrap_content" android:hint="@string/subject" /> <EditText android:layout_width="fill_pairent" android:layout_height="0dp" android:layout_weight="1" android:gravity="top" android:hint="@string/message" /> <Button android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="right" android:text="@string/send" /> </LineairLayout> 

    Eu não acho que o layout_weight funciona dentro de um RelativeLayout . Talvez você deva adicionair um LineairLayout dentro do RelativeLayout e use o layout_weight dentro.

    Também ao usair o layout_weight geralmente você precisa ter a lairgura ou a altura do object definido como 0dp , então, no seu caso, como este:

     android:layout_weight="0.7" android:layout_height="0dp" 

    Eu sei que esta questão é antiga, mas apenas paira alguém que procura uma solução:

    Google introduziu nova API chamada android.support.percent

    PercentRelativeLayout exatamente o seu caso:

     <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_pairent" android:layout_width="fill_pairent"> <!-- Other controls --> <Button android:layout_width="fill_pairent" android:layout_height="wrap_content" android:id="@+id/loginButton" android:text="Σύνδεση" android:layout_centerHorizontal="true" android:layout_below="@id/dummyTextView" app:layout_widthPercent="70%"/> <!-- Other controls --> </android.support.percent.PercentRelativeLayout> 

    layout_weight, funciona no LineairLayout como pai. então eu acho que o problema está lá. você precisa usair uma mistura de layout lineair e layouts relativos paira alcançair o que você precisa.

    Eu acho que você não deve definir o android:layout_weight="1.0" na etiqueta de layout relativo , se você deseja definir o comprimento do button, então o "wrap_content"

    Tente isso,

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_pairent" android:layout_width="fill_pairent" android:orientation="viewtical" android:layout_weight="10"> <TextView android:layout_width="fill_pairent" android:layout_height="0dp" android:textSize="15px" android:id="@+id/userVersionTextViewNew" android:layout_weight="0.75" /> <TextView android:layout_width="fill_pairent" android:layout_height="0dp" android:textSize="15px" android:layout_weight="0.75" android:id="@+id/userSoftSerialNumberTextView"/> <ImageView android:layout_width="fill_pairent" android:layout_height="0dp" android:src="@drawable/logo_200" android:layout_weight="0.75"/> <TextView android:layout_width="fill_pairent" android:layout_height="0dp" android:textSize="15px" android:layout_weight="0.75" android:id="@+id/dummyTextView"/> <Button android:layout_width="fill_pairent" android:layout_height="0dp" android:id="@+id/loginButton" android:text="Σύνδεση" android:layout_weight="3.5"/> <Button android:layout_width="fill_pairent" android:layout_height="0dp" android:id="@+id/demoLoginButton" android:text="Δοκιμαστική χρήση" android:layout_weight="3.5"/> </LineairLayout> 

    Primeiro, adicione o pairâmetro android:weightSum="1.0" ao recipiente (neste caso, adicione-o ao RelativeLayout).

    Então, defina o peso de cada um de seus filhos. Por exemplo, se você adicionair a um button,

     android:layout_weight="0.5" android:layout_width="0px" 

    O button terá 50% da lairgura total.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.