Layout di Android: la metà di width del genitore

Ho un layout molto semplice che non riesco a farlo sembrare come voglio. È un LinearLayout con un button e un interruttore. Voglio che loro mostrano uno sopra l'altro, ma voglio che la loro width sia la metà del layout genitore.

|--LinearLayout---------| | | | ----------- | || Switch | | | ----------- | | ----------- | || button | | | ----------- | ------------------------ 

Sto guardando un'altra risposta simile in SO, ma non ho trovato una soluzione che funziona per me. Questo è quello che ho provato finora:

  • java.lang.IllegalArgumentException: Rect dovrebbe intersecare con i limiti del bambino
  • Shader per Android OpenGL ES
  • Errore di YouTubePlayerSupportFragment e AppCompatActivity
  • Impostare il carattere personalizzato per i frammenti di Android
  • Escludi le intestazioni predefinite impostate dalla libreria OkHttp
  • Esiste una soluzione alternativa al bug OnItemSelectedListener?
  •   <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:weightSum="2" > <Switch android:id="@+id/remember_me_switch" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:hint="@string/remember" /> <Button android:id="@+id/share_button" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:onClick="loginOnclick" android:text="@string/login_button_text" /> </LinearLayout> 

    Con questo, il button e l'interruttore assumono tutto lo spazio del genitore anziché prendere solo la metà. Ho provato con android:layout_width = 0dp nei bambini ma lo fa scomparire.

    Qualsiasi aiuto, per favore?

  • Disegnare una sottolineatura sotto TextView in Android
  • Android cambia colore della priorità bassa della canvas senza perdere i disegni da esso
  • Android come fare l'ascoltatore a una variabile personalizzata?
  • Imansible aprire il nome del file Android con spazio bianco
  • È ansible aggiungere pulsanti a un framelayout impostato in modo programmato?
  • TextView Marquee non funziona
  • 4 Solutions collect form web for “Layout di Android: la metà di width del genitore”

    Un modo ansible è quello di avere un Master LinearLayout orizzontale che divide la width a 2 e all'interno di esso ha il layout verticale

      <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <LinearLayout android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:orientation="vertical" > <Switch android:id="@+id/remember_me_switch" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/remember" /> <Button android:id="@+id/share_button" android:layout_width="match_parent" android:layout_height="match_parent" android:onClick="loginOnclick" android:text="@string/login_button_text" /> </LinearLayout> <!-- Right side spacer --> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_weight="1" /> </LinearLayout> 

    Il trucco è usare 0dp per la dimensione da gestire tramite layout_weight ! Prova questo

      <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="2" > <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" android:weightSum="2" > <Switch android:id="@+id/remember_me_switch" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:hint="@string/remember" /> <Button android:id="@+id/share_button" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:onClick="loginOnclick" android:text="@string/login_button_text" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" > </LinearLayout> </LinearLayout> 

    Prova questo codice

     <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:weightSum="2" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Switch android:id="@+id/remember_me_switch" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:hint="@string/remember" /> <View android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/share_button" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:onClick="loginOnclick" android:text="@string/login_button_text" /> <View android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1"/> </LinearLayout> </LinearLayout> 
     Button button = (Button) findViewById(R.id.share_button); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; int buttonWidth = width/2; 

    impostare questo buttonLa buttonWidth sul button come button.setWidth button.setWidth(buttonWidth);

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.