2010-11-23 36 views
2

これが可能かどうかは分かりませんが、それに基づいてトピックを見つけることはできませんでしたが、それ。Androidウィジェットのサイズ変更/縮小(DatePickerとTimePicker)

今私が探しているのは、デフォルトのAndroidウィジェット、特にDatePickerとTimePickerをアクティビティで使用するようにサイズを変更することです。しかし、私が見る限り、どちらのピッカーの幅または高さを(負の方向に)変更する唯一の結果は、ウィジェットのスケーリング/ストレッチされたビューではなく、クロップされたビューになります。

私自身のカスタムウィジェットを自分のものに公開していますが、このプロジェクトを可能な限りAndroid OSのUIとマッチングさせて、できるだけシンプルでクリーンなものにしたいと思っています。ネイティブDatePickerとTimePickerを使用するようです論理的な選択肢のように私に。これらのウィジェットを切り取るのではなく、どのように拡大縮小するかを知っている人は、本当に感謝しています。

ありがとうございました。

答えて

5

それは非常に悪いハックですが、それは動作するはずです: LinearLayoutを拡張する新しいビュー、上書き方法getChildStaticTransformationtrueへの明示的なsetStaticTransformationsEnabledを作成します。

メソッドgetChildStaticTransformationでは、tranformationパラメータを操作して、拡張されたLinearLayoutのすべての内容を縮小することができます。

このビューの子としてDatePickerなどを追加します。

EG:

public class ZoomView 
    extends LinearLayout 
{ 

private float sf = 1f; 

public ZoomView(final Context context, final AttributeSet attrs) 
{ 
    super(context, attrs); 
    setStaticTransformationsEnabled(true); 
} 

public ZoomView(final Context context) 
{ 
    super(context); 
    setStaticTransformationsEnabled(true); 
} 

public void setScaling(final float sf) 
{ 
    this.sf = sf; 
} 

@Override 
protected boolean getChildStaticTransformation(final View child, final Transformation t) 
{ 
    t.clear(); 
    t.setTransformationType(Transformation.TYPE_MATRIX); 
    final Matrix m = t.getMatrix(); 
    m.setScale(this.sf, this.sf); 
    return true; 
} 

} 
+1

うーん...それは、これを行うのより良い方法がどこかに存在していないことは非常に注目すべきです。感動を助けてくれてありがとう。私はすぐにそれを与えるだろうが、私は、他のものがアプリでより定住した後、私が扱うコードの後の部分の1つになると思う。待っている価値があると思われる、笑... –

関連する問題