2010-10-07 51 views
1

如果我將ImageView設置爲可點擊和可聚焦,它可以工作,但我無法分辨哪個圖像的焦點。讓它在視圖周圍繪製橙色邊框的最佳方式是什麼,以便用戶知道它當前處於焦點?Android佈局 - ImageView專注,但不會在屏幕上顯示任何內容(沒有突出顯示)

我嘗試將它放在LinearLayout中,並將其設置爲可聚焦和可點擊,但沒有任何運氣。即使我在上面留下了餘量,也沒有任何信息表明它已被選中。

回答

6

您可以使用帶選擇器的drawable作爲背景。

例如,我有在res gallery_image_bg.xml /抽拉:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
      android:constantSize="true"> 
    <item android:state_selected="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#E6E4E0"/> 
     <stroke android:width="3dp" android:color="#F9C11E"/> 
     <padding android:left="3dp" 
       android:top="3dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
    </shape> 
    </item> 
    <item android:state_pressed="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#E6E4E0"/> 
     <stroke android:width="3dp" android:color="#F9C11E"/> 
     <padding android:left="3dp" 
       android:top="3dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
    </shape> 
    </item> 
    <item> 
    <shape android:shape="rectangle"> 
     <solid android:color="#E6E4E0"/> 
     <stroke android:width="3dp" android:color="#FFF"/> 
     <padding android:left="3dp" 
       android:top="3dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
    </shape> 
    </item> 
</selector> 

這在圖像周圍三個不同顏色的線條3DP。它們是可見的,因爲填充強制圖像呈現在稍小的區域。

用於代碼如下所示:

image.setBackgroundResource(R.drawable.gallery_image_bg) 
+0

如果你喜歡答案,請考慮檢查它。 – 2012-03-27 02:13:31

0

的快速解決方案是使用一個監聽器,它會在點擊響應,並在ImageView的設置橙色邊框...

imageView.setOnClickListener(listener) 

但你必須做的,對於所有的ImageView的項目。至少他們可以共享同一個聽衆。

長的解決方案是實現您自己的視圖,擴展ImageView,該圖像繪製自己的橙色邊框以響應點擊。

我假設你想讓它像單選按鈕一樣工作,單擊一個ImageView將從先前選擇的ImageView中刪除邊框?因此,您需要共享偵聽器來維護對當前選定ImageView的引用,然後可以在單擊新ImageView時「取消選擇」。

+0

我有點擊工作確定,這是我需要幫助的焦點問題。當它聚焦時,沒有跡象表明哪個圖像具有焦點。你不能說,因爲用戶界面不會改變。我可以setOnFocusListener,但有關如何在我的圖像周圍繪製橙色框的建議? – 2010-10-08 05:59:06

0

晚的答案,但你也可以使用一個LayerDrawable的圖像源。那麼你不必亂搞背景,填充等。

LayerDrawable d = new LayerDrawable(new Drawable[]{new BitmapDrawable(myBmp), getResources().getDrawable(R.drawable.my_selector_list)}); 
imageView.setImageDrawable(d); 
相關問題