2016-04-05 15 views
0

ここは私の現在の状況の小さなGIFです。私は多くの画像が多くの単語よりも優れていると思います。 seekbar bugフレームに影響を与えずに画像を置き換える

わかりましたが、私が小さいイメージに切り替えると、シークバーのサイズが変わります。これはシークバーの幅がmatch_parentに、画像の幅がwrap_contentに設定されているためです。

この問題を解決する方法はわかりませんが、実際には幅の値をハードコードすることはできません。それ以外の場合は、さまざまなスクリーンサイズでうんざりするでしょう。

だから、私の質問は:きれいで、この動作を防止するための方法は、

ありますか?私は単に実行時に幅を取得し、それを最小限の幅に設定して、おそらく動作します(ちょっと、私は確かめるために試してみることができます)。しかし、それはコードワイズを行うだけの恐ろしいことです。

理想的には、.xmlファイルでこれを防ぐ方法があると思いますが、異なるパディング、余白、スケーリング、レイアウトサイズで再生することはできませんでした。ボリュームのアイコンが同じサイズであるために理想的には、それはいいだろう

<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

ImageButtonに明示的な幅を設定することもできますし、線形レイアウトに切り替えた場合の重みを避けるためにビューに適用することもできます。たとえば、WeightSumが10、各ImageButtonの幅が0dp、ウェイトが1で、SeekBarの幅が0dp、ウェイトが8のLinearLayoutでは、ダイナミックではありません。また、centerInsideのようなscaleTypeをこれと組み合わせて使用​​すると、画像が奇妙なスケールにならないようにすることもできます。 – zgc7009

答えて

0

:ここ

は、あなたが見ているものです。

android:layout_toLeftOf="@+id/muteButton"android:layout_marginRight="15dp+30dp+largest_icon_width_in_dp" に置き換えてください。ここで、15dpはシークバーの右マージン、30dpはミュートボタンの右マージンです。

第3の選択肢は、ミュートボタンの固定幅を最大画像の幅と同じにすることです。