3
我試圖改變一些Android組件的形狀,如Button或View。我能做的是用onDraw-Method爲背景分配一個形狀。那麼,它看起來像重塑,但觸摸事件仍然會超出我定義的形狀。有沒有任何可行的方法來排除我的形狀之外的觸摸?當然,我可以檢查鼠標事件的每個位置,但對於更復雜的形狀,我不知道如何檢查點是否在形狀內。 感謝您的回覆。Android完全成形按鈕
西蒙
我試圖改變一些Android組件的形狀,如Button或View。我能做的是用onDraw-Method爲背景分配一個形狀。那麼,它看起來像重塑,但觸摸事件仍然會超出我定義的形狀。有沒有任何可行的方法來排除我的形狀之外的觸摸?當然,我可以檢查鼠標事件的每個位置,但對於更復雜的形狀,我不知道如何檢查點是否在形狀內。 感謝您的回覆。Android完全成形按鈕
西蒙
可以在XML (as you can see here)定義形狀。 例如:
繪製/ sample_shape.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
然後你可以使用XML描述爲一個ImageButton可繪製。
繪製/ samplebutton.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/sample_shape" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/sample_shape" /> <!-- focused -->
<item android:drawable="@drawable/sample_shape" /> <!-- default -->
</selector>
在layoutfile
:
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/samplebutton">
</ImageButton>
當然,我能做到這樣。但主要問題保持不變。如果我定義了一個cricular形狀,我不希望它在我的形狀之外觸摸。對於你的例子,它可以在圈外觸摸。 – Simon 2011-05-23 10:10:49
好吧,我認爲ImageButton類爲你做,但它沒有。對不起。 – 2011-05-23 10:38:09