2016-10-04 88 views
1

我有一個線性佈局,其中包含三個圖像按鈕。每個圖像按鈕都有不同的顏色。在初始時間,所有圖像按鈕都未被選中。如果選擇了圖像按鈕(藍色V將與圖像按鈕背景重疊),並且未選中另一個圖像按鈕,我想爲圖像按鈕進行選中/選擇。我怎麼能在android中做到這一點?在Android中設置選中/選擇的圖像按鈕

這是我的佈局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_marginTop="7dp" 
    android:layout_centerInParent="true"> 
    <ImageButton 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/color1" 
     android:background="@color/colorAccent"/> 
    <ImageButton 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/color2" 
     android:layout_marginLeft="5dp" 
     android:background="@color/colorPrimaryDark" /> 
    <ImageButton 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/color3" 
     android:layout_marginLeft="5dp" 
     android:background="@color/colorPrimary"/> 
</LinearLayout> 

更新:藍色V來檢查狀態。這是一個類似的結果

enter image description here

+0

什麼是藍色v?你的意思是你只能選擇3箇中的1個?沒有多重選擇?請詳細說明 –

+0

'V'表示選中狀態。它在檢查時看起來是複選框。你是對的。我只想要一次檢查,而不是多次檢查 – Jame

+0

你想要單次檢查的邏輯,而不是多次檢查每個圖像點擊嗎? –

回答

1

我會建議使用複選框這項任務。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_marginTop="7dp" 
    android:layout_centerInParent="true"> 
    <android.support.v7.widget.AppCompatCheckBox 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/color1" 
     android:button="@drawable/color_selector" 
     android:background="@color/accent"/> 
    <android.support.v7.widget.AppCompatCheckBox 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:id="@+id/color2" 
     android:button="@drawable/color_selector" 
     android:layout_marginLeft="5dp" 
     android:background="@color/primary" 
     android:checked="false" /> 
    <android.support.v7.widget.AppCompatCheckBox 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:button="@drawable/color_selector" 
     android:id="@+id/color3" 
     android:layout_marginLeft="5dp" 
     android:background="@color/primary_dark"/> 
</LinearLayout> 

和color_selector.xml應該放到繪製文件夾與所需的選擇(只是一個例子)

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_checked="true" android:drawable="@drawable/ic_done_white_18dp"> 
    <shape android:shape="rectangle" > 
     <stroke android:color="@color/white" android:width="2dp"/> 
     <corners 
      android:bottomLeftRadius="@dimen/spacing_xxsmall" 
      android:bottomRightRadius="@dimen/spacing_xxsmall" 
      android:topLeftRadius="@dimen/spacing_xxsmall" 
      android:topRightRadius="@dimen/spacing_xxsmall" /> 
    </shape> 
</item> 
<item android:state_checked="false"> 
    <shape android:shape="rectangle"> 
     <stroke android:color="@color/white" android:width="1dp"/> 
     <corners 
      android:bottomLeftRadius="@dimen/spacing_xxsmall" 
      android:bottomRightRadius="@dimen/spacing_xxsmall" 
      android:topLeftRadius="@dimen/spacing_xxsmall" 
      android:topRightRadius="@dimen/spacing_xxsmall" /> 
    </shape></item> 
</selector> 

希望這會有所幫助。

+0

除非創建自定義的'View'類,否則不需要使用'AppCompatCheckBox';它將在適用的地方自動使用。從[documentation](https://developer.android.com/reference/android/support/v7/widget/AppCompatCheckBox.html):「當您在佈局中使用」CheckBox「時,將自動使用此選項。編寫自定義視圖時需要手動使用此類。「 – Bryan

+0

沒錯。這是自動完成。 –

+0

抱歉,延遲。這正是我需要的。你可以在'android:bottomLeftRadius','android:bottomRightRadius'中爲'@ dimen/spacing_xxsmall'建議一些值... – Jame