2016-12-13 63 views
1

我目前正在開發Android應用程序。禁用默認佈局中的相關按鈕

我的應用程序中的所有活動都具有相同的基本佈局,該佈局在「default_layout.xml」文件中定義。在每一個活動的佈局文件,我用:

<include layout="@layout/default_layout" android:id="@+id/include"/>

包括佈局。

我想要做的是禁用默認佈局中的按鈕(使其不可點擊並將其更改爲可視化表示的alpha值),這與當前打開的活動相關,以防止用戶打開另一個同樣的活動。例如,我想在創建設置活動時禁用「設置」按鈕。

我可以在onCreate方法中通過代碼訪問的按鈕,像這樣:

findViewById(R.id.saveButton).setEnabled(false); 
findViewById(R.id.saveButton).setClickable(false); 
findViewById(R.id.saveButton).setFocusable(false); 
findViewById(R.id.saveButton).setAlpha(0.5f); 

沒有任何錯誤,但是這些方法都沒有按鈕的實際工作。

下面是我的default_layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

<Button android:layout_width="90dp" 
     android:layout_height="40dp" 
     android:text="@string/button_open" 
     android:duplicateParentState="true" 
     android:id="@+id/openButton" 
     android:textSize="16sp" android:background="#0A7D1F" 
     android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:textColor="#fff"/> 

<Button android:layout_width="90dp" 
     android:layout_height="40dp" 
     android:text="@string/button_save" 
     android:id="@+id/saveButton" 
     android:textSize="16sp" 
     android:enabled="false" 
     android:background="#0A7D1F" 
     android:layout_alignParentTop="true" android:layout_toEndOf="@+id/openButton" android:textColor="#fff" 
     android:focusable="false" android:focusableInTouchMode="false" android:longClickable="false" 
     android:nestedScrollingEnabled="false"/> 

<Button android:layout_width="90dp" 
     android:layout_height="40dp" 
     android:text="@string/button_send" 
     android:id="@+id/sendButton" 
     android:textSize="16sp" 
     android:background="#0A7D1F" 
     android:textColor="#fff" 
     android:layout_alignParentTop="true" android:layout_alignStart="@+id/fu3Button"/> 

<Button android:layout_width="145dp" 
     android:layout_height="40dp" 
     android:text="@string/button_connect" 
     android:id="@+id/connectButton" 
     android:textSize="16sp" 
     android:background="#0A7D1F" 
     android:textColor="#fff" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/sendButton"/> 

<Button android:layout_width="90dp" 
     android:layout_height="40dp" 
     android:text="@string/button_fu1" 
     android:id="@+id/fu1Button" 
     android:textSize="16sp" 
     android:layout_alignTop="@+id/fu2Button" android:layout_alignStart="@+id/openButton" 
     android:background="#0A7D1F" android:textColor="#fff"/> 

<Button android:layout_width="90dp" 
     android:layout_height="40dp" 
     android:text="@string/button_fu2" 
     android:id="@+id/fu2Button" android:textSize="16sp" 
     android:layout_alignParentBottom="true" android:layout_toStartOf="@+id/fu3Button" 
     android:background="#0A7D1F" android:textColor="#fff"/> 

<Button android:layout_width="90dp" 
     android:layout_height="40dp" 
     android:text="@string/button_fu3" 
     android:id="@+id/fu3Button" android:textSize="16sp" 
     android:layout_alignTop="@+id/fu2Button" android:layout_toEndOf="@+id/saveButton" 
     android:background="#0A7D1F" android:textColor="#fff"/> 

<Button android:layout_width="125dp" 
     android:layout_height="40dp" 
     android:text="@string/button_settings" 
     android:id="@+id/settingsButton" android:textSize="16sp" 
     android:layout_alignBottom="@+id/fu3Button" android:layout_alignStart="@+id/connectButton" 
     android:background="#0A7D1F" android:textColor="#fff" 
     android:onClick="openSettings" android:layout_alignParentEnd="true"/> 

任何和所有的建議將不勝感激,謝謝。

+0

你能顯示default_layout.xml –

回答

0

您是否檢查過'default_layout.xml'文件,確保您想要的按鈕的ID實際上是'saveButton'?這些按鈕是什麼類型的?它們是否在菜單中,是否在應用欄上,是否是實際的按鈕?

+0

應該不重要的按鈕的類型,被調用的方法可在所有'View'對象上使用 –

+0

同意,我應該只是要求查看'default_layout.xml'文件。 – slayerpjo

+0

是的,這個ID是正確的。我編輯了OP來包含佈局文件。 –

0

嘗試刪除您在每個按鈕中設置的背景。這可能是隱藏你正在禁用的事實等。

+0

即使它在視覺上隱藏,我可以按下按鈕,並打開其相關活動的另一個實例。這是我想要阻止的。 –