2013-02-22 2 views
8

Ich habe Knopf in dem ich denselben Platz zwischen allen Knopf setzen möchte also, wenn ich App in Tablet laufen den Raum zwischen Taste wird gleich teilen, ich benutze linearlayout, ich weiß, es gibt layout_weight Option aber ich will nicht Symbolmachen gleichen Platz zwischen Button in linearlayout

zum Beispiel enter image description here

meine xML-Code strecken unten ist

<LinearLayout 
     android:id="@+id/shareLinearLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btnRequestAPrescriptionRefill" 
     android:layout_marginTop="10dp" > 

     <Button 
      android:id="@+id/btnFacebook" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/btn_facebook" /> 

     <Button 
      android:id="@+id/btnYoutube" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/btn_youtube" /> 

     <Button 
      android:id="@+id/btnTwitter" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/btn_twitter" /> 

     <Button 
      android:id="@+id/btnPintrest" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/btn_pintrest" /> 
    </LinearLayout> 

Antwort

26

Sie layout_weight verwenden können. Aber wie du gesagt hast Buttons will be stretched, so verwende anstelle von Gewicht auf Buttons, Leerzeichen (Views).

<Button 
     android:id="@+id/btnFacebook" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_facebook" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_weight="1" /> 

    <Button 
     android:id="@+id/btnYoutube" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_youtube" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_weight="1" /> 

    <Button 
     android:id="@+id/btnTwitter" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_twitter" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="50dp" 
     android:layout_weight="1" /> 

    <Button 
     android:id="@+id/btnPintrest" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_pintrest" /> 
</LinearLayout> 
+0

Schließlich ist Ihre Antwort fit :) –

+0

Vielen Dank Archie.bpgc –

+1

gute Antwort. Kleine Verbesserung: Verwenden Sie ein anstelle eines Ihr Ziel klarer in Ihrer XML zu machen. – PeteH

3

geben layout_weight jedem Button 1, wird es den ganzen Raum teilen

+0

aber Symbol wird strecken! –

4

Try this ...

<Button 
     android:id="@+id/btnFacebook" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_facebook" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="3" /> 

    <Button 
     android:id="@+id/btnYoutube" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_youtube" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="3" /> 

    <Button 
     android:id="@+id/btnTwitter" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_twitter" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="3"/> 

    <Button 
     android:id="@+id/btnPintrest" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_pintrest" /> 
+0

nein deepzz Ich habe versucht, Ihren Code, aber es wird genauso aussehen wie layout_weight = "1" –

+0

@SiddhpuraAmit: Versuchen Sie Breite 0DP anstelle von Wrap_Content für diese Layouts – Deepzz

3

ich mit einem Tisch-Layout gehen würde und haben strechColums = "0". Sonst, wenn Sie am linearen Layout bleiben wollen, haben Sie dann space ausprobiert.

+0

können Sie mir ein wenig Code geben –

+0

Hallo Chris können Sie mit strechColumns wie vorschlagen Kann ich es tun –

4

ersetzen jede Taste mit

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center" 
    > 
    <Button 
     android:id="@+id/btnFacebook" 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:background="@drawable/btn_facebook" /> 
</RelativeLayout> 

heißt wickeln jede Taste mit RelativeLayout mit android:layout_weight und android:gravity

5

Um Ihre Absicht klarer in Ihrer XML zu machen einen <Space> verwenden anstelle eines <View> wie folgt:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:background="@color/Blue" 
     android:orientation="horizontal" > 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1" > 
     </Space> 

     <Button 
      android:id="@+id/btnFacebook" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/btn_facebook" /> 

     <Space 
      android:layout_width="0dp" 
      android:layout_height="1dp" 
      android:layout_weight="1" > 
     </Space> 

...and repeat with the rest of your buttons... 

</LinearLayout>