2016-04-05 4 views
0

Hier ist ein kleines gif meiner aktuellen Situation. Ich denke, viele Bilder sind besser als viele Worte. seekbar bugBild ohne Beeinflussung Frame ersetzen

Wie Sie bemerken, wenn ich für das kleinere Bild wechsle, ändert sich die Suchleiste Größe. Ich weiß, das liegt daran, dass die Breite der Suchleiste auf und die Bildbreite auf wrap_content eingestellt ist.

Was ich nicht weiß, ist, wie dieses Problem zu überwinden, wie ich Breite Breite Wert nicht wirklich hartcodieren kann, sonst wird es wahrscheinlich auf verschiedenen Bildschirmgrößen vermasselt.

Also meine Frage ist:

Gibt es eine Möglichkeit, dieses Verhalten zu verhindern, die sauber ist? Ich könnte einfach die Breite zur Laufzeit bekommen und sie als minimale Breite einstellen und es würde wahrscheinlich funktionieren (heck, ich könnte es jetzt versuchen, um sicher zu gehen), aber das ist nur eine schreckliche Sache, Code-weise zu tun.

Idealerweise Ich vermute, es gibt eine Möglichkeit, dies in der XML-Datei zu verhindern, aber ich kann es nicht herausfinden, mit den verschiedenen Polsterungen, die Margen zu spielen, Skalierung und Layoutgrößen.

Hier ist, was Sie suchen auf:

<RelativeLayout 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"> 
     <ImageButton 
      android:background="@android:color/transparent" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:scaleType="center" 
      android:id="@+id/playButton" 
      android:layout_alignParentLeft="true" 
      android:layout_marginLeft="30dp" 
      android:layout_centerVertical="true" 
      android:src="@drawable/play" 
      android:onClick="PlayButtonClicked" /> 
     <SeekBar 
      android:max="100" 
      android:id="@+id/volumeSeekBar" 
      android:layout_centerVertical="true" 
      android:layout_margin="15dp" 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:layout_toRightOf="@+id/playButton" 
      android:layout_toLeftOf="@+id/muteButton" /> 
     <ImageButton 
      android:background="@android:color/transparent" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:scaleType="center" 
      android:id="@+id/muteButton" 
      android:layout_alignParentRight="true" 
      android:layout_marginRight="30dp" 
      android:layout_centerVertical="true" 
      android:onClick="MuteButtonClicked" 
      android:src="@drawable/sound" /> 
    </RelativeLayout> 
+0

Sie können eine explizite Breite für Ihre ImageButtons festlegen oder Gewichte (wenn Sie zum linearen Layout wechseln) für Ihre Ansichten verwenden, um dies zu vermeiden. Zum Beispiel wäre ein LinearLayout mit einer Gewichtssumme von 10, jeder ImageButton mit einer Breite von 0dp und einem Gewicht von 1 und der SeekBar mit einer Breite von 0dp und einem Gewicht von 8 weniger dynamisch. Sie können auch einen scaleType wie centerInside in Verbindung damit verwenden, um sicherzustellen, dass Ihre Bilder nicht seltsam skalieren. – zgc7009

Antwort

0

Im Idealfall wäre es schön, für die Lautstärke-Symbole der gleichen Größe zu sein.

Wenn das keine Option ist, ersetzen Sie android:layout_toLeftOf="@+id/muteButton" durch android:layout_marginRight="15dp+30dp+largest_icon_width_in_dp" , wobei 15dp der rechte Rand der Suchleiste ist, 30dp der rechte Rand der Stummschalttaste ist.

Die dritte Option wäre, eine feste Breite für die Mute-Schaltfläche gleich der Breite des größten Bildes festzulegen.