2016-02-09 18 views
5

Ich habe einige XML. In diesem XML gibt es eine einzelne Schaltfläche in einem relativen Layout. Das relative Layout nimmt den gesamten Bildschirm ein. Ich möchte, dass der Button 1/3 der Bildschirmbreite und -höhe hat. Wie könnte ich das tun? HierAndroid machen Taste 1/3 der Bildschirmbreite und Höhe in relativer Layout

ist die XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="0dp" 
    android:paddingRight="0dp" 
    android:paddingTop="0dp" 
    android:paddingBottom="0dp" 
    tools:context="com.vroy.trapper.MainMenuActivity" 
    android:layout_weight="2"> 

    <Button 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:text="@string/menu_button_text" 
     android:background="@drawable/round_button" 
     android:id="@+id/button" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     /> 
</RelativeLayout> 

ich this Frage gesucht, aber auch wenn ich ein Gewicht auf das relative Layout zugewiesen selbst ich konnte kein Gewicht auf die Taste zuweisen.

Antwort

8

können Sie dies einfach in Java-Code tun.

schreibe diesen Code in oncreate.

Button b=(Button) findViewById(R.id.button); 
    int width = getResources().getDisplayMetrics().widthPixels/3; 
    int hei=getResources().getDisplayMetrics().heightPixels/3; 
    b.setLayoutParams(new RelativeLayout.LayoutParams(width,hei)); 
0

Verwenden Sie LinearLayout anstelle von RelativeLayout, um Ihr Ziel zu erreichen.

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     /> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:orientation="vertical"> 
     <View 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      /> 
     <Button 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:text="@string/menu_button_text" 
      android:background="@drawable/round_button" 
      android:id="@+id/button"/> 
      <View 
      android:layout_width="wrap_content" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      /> 
    </LinearLayout> 
    <View 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     /> 

    </LinearLayout> 

Hoffe es hilft !!

+0

Das Problem ist, ich möchte ein relatives Layout für mein Gesamtlayout. – Roymunson

+0

Ich verstehe, ist aber nicht möglich, Gewicht in RelativeLayout zu verwenden, dieses Element ist für Widget in LinearLayout :(... Aber Sie könnten RelativeLayout als übergeordnetes Layout verwenden und innerhalb dieses setzen Sie meine posted LinearLayout mit Android: layout_width = "match_parent" android: layout_height = "match_parent" Dies ist einer der Tricks, die RelativeLayout in Kombination mit LinearLayout verwenden –

2

(EDITED, um auch die Breite zu berücksichtigen) Wickeln Sie den Knopf um ein lineares Layout.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="0dp" 
    android:paddingLeft="0dp" 
    android:paddingRight="0dp" 
    android:paddingTop="0dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:gravity="center" 
     android:weightSum="3" > 
     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:gravity="center" 
      android:weightSum="3"> 

      <Button 
       android:id="@+id/button" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_centerHorizontal="true" 
       android:layout_centerVertical="true" 
       android:layout_weight="1" 
       android:text="@string/menu_button_text" 
       android:background="@drawable/round_button" 
       /> 
     </LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 

Ändern Sie den android:gravity, wenn Sie Ihre Taste rechts/links usw. Damit sein wollen, könnten Sie immer noch Ihre Verwandten Layout für andere Dinge um es benutzen.

+0

Ihre Version des Codes scheint zu bewirken, dass die Schaltfläche 1/3 der Bildschirmhöhe einnimmt, aber nicht 1/3 der Bildschirmbreite Vielleicht liegt das daran, dass Sie die Breite auf "match_parent" 'setzen? – Roymunson

+0

Ich habe auch bearbeitet, um Breite zu berücksichtigen, indem ich zusätzliches LinearLayout hinzufüge.Nicht die netteste Art Dinge zu tun, da es verschachteltes Layout ist. – Elye

+0

Beste Antwort, danke sehr viel! – middlehut

4

Prozent Unterstützung Bibliothek ist das, was Sie brauchen.

Diese Bibliothek ist ziemlich einfach zu verwenden, da es nur das gleiche RelativeLayout und FrameLayout ist, das wir kennen, nur mit einigen zusätzlichen Funktionalitäten.

Zunächst, da die Percent Support Library mit der Android Support Library 23 geliefert wird, stellen Sie bitte sicher, dass Sie die Android Support Library im SDK Manager auf die neueste Version aktualisieren. Und dann eine Abhängigkeit wie unten in build.gradle Datei hinzufügen:

Kompilierung ‚com.android.support:percent:23.0.0‘

Nun zurück zu Ihrer Frage kommen, können Sie etwas tun so, um deine Leistung zu erreichen. Hoffe es wird dir helfen.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<Button 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:background="@drawable/bird" 
    android:text="Your text" 
    app:layout_heightPercent="33%" 
    app:layout_widthPercent="33%" /> 
</android.support.percent.PercentRelativeLayout> 
+1

Bitte stimmen Sie ab, wenn meine Antwort Ihnen geholfen hat. – Rahul