2010-11-23 131 views
2

我不確定這是否可能,並且我找不到基於它的主題,但是如果在回答之前給我一個鏈接,那將是那。調整大小/縮小Android小部件(DatePicker和TimePicker)

我現在想要做的是調整一些默認Android窗口小部件,特別是DatePicker和TimePicker,以便在Activity中使用。但據我所見,修改選擇器的寬度或高度(負方向)的唯一結果是裁剪視圖,而不是縮放/拉伸的控件視圖。

我對我自己的自定義小部件開放,但我真的希望保持此項目儘可能簡單和乾淨,儘可能匹配Android操作系統UI,因此使用本機DatePicker和TimePicker似乎這對我來說是合乎邏輯的選擇。如果有人知道如何縮小這些小部件而不是裁剪它們,我會非常感激。

謝謝。

回答

5

這是一個非常糟糕的黑客,但它應該工作: 創建擴展LinearLayout一個新的觀點,覆蓋方法getChildStaticTransformationsetStaticTransformationsEnabled明確到true

在方法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

嗯......這是相當顯着的,這樣做的更好的方法不存在的地方。非常感謝幫助印象。我會盡快給它一下,但我認爲這將是我處理的後續代碼之一,在其他事情更加穩定之後。似乎值得等待,哈哈...... – 2010-11-29 20:56:26