ここは私の現在の状況の小さなGIFです。私は多くの画像が多くの単語よりも優れていると思います。 フレームに影響を与えずに画像を置き換える
わかりましたが、私が小さいイメージに切り替えると、シークバーのサイズが変わります。これはシークバーの幅が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>
ImageButtonに明示的な幅を設定することもできますし、線形レイアウトに切り替えた場合の重みを避けるためにビューに適用することもできます。たとえば、WeightSumが10、各ImageButtonの幅が0dp、ウェイトが1で、SeekBarの幅が0dp、ウェイトが8のLinearLayoutでは、ダイナミックではありません。また、centerInsideのようなscaleTypeをこれと組み合わせて使用すると、画像が奇妙なスケールにならないようにすることもできます。 – zgc7009