2016-04-19 3 views
0

現在、Xamarin.Androidアプリを開発中です。私は、テキストとDrawableTopミップマップイメージを含むボタンがあります。私がAxmlにデフォルトのDrawableTopイメージを設定すると、それが機能しています。私のイメージは私が望む場所に表示されます。MipmapリソースをButton DrawableTopとして使用する

しかし、私がしようとしているのは、ボタンをクリックするとプログラム内でこのイメージを変更し、別のクリック(ブール値を使用して実際の状態を確認)した後に元に戻します。

私はインターネットでチェックして、C#コードのボタンのドロワーブルを置き換える機能を発見しました。また、私はしたいミップマップ画像を収集する必要がありますが、ボタンはDrawableのobjetcsを必要として、私はいくつかのことを試みたが、一つだけがクラッシュしていないが、このです:

Drawable topDrawable = Resources.GetDrawable(Resource.Mipmap.mymipmap); 
filterButton.SetCompoundDrawables(null, topDrawable, null, null); 
//The parameters being, in order, left, top, right, bottom drawables. 

コンパイルすると、私は私のボタンを見ることができますデフォルトのDrawableTopはレイアウトに定義されていますが、クリックすると新しいイメージを表示する代わりに消えます。私の推測では、topDrawableは実際にはnullと等しいです。

私はMipmapリソースを取得し、それを描画可能なものとして使用する方法を探しています。しかし、多分私は間違っていて、問題はどこかにある。

ありがとうございます!

答えて

0

実際、私が思った解決策は簡単です。 drawableは、私がブレークポイントでチェックしたので、nullと等しくありません。問題は画像の位置にありました。レイアウトでイメージを直接定義する場合、このDrawableの位置は自動的に定義されます。上記の関数を使用してドロワブルをプログラムで置き換えるときは、位置を置き換えます。元の位置を維持してイメージを置き換えるには、次のようにする必要があります。

Drawable topDrawable = Resources.GetDrawable(Resource.Mipmap.mymipmap); 
filterButton.SetCompoundDrawablesWithIntrinsicBounds(null, topDrawable, null, null); 

機能の名前はすべてです。

+0

とにかく上記の解決策はapi17 –

関連する問題