2013-07-04 78 views
5

如何爲佈局定義ID?Android將ID添加到佈局

我想要的ID添加到的LinearLayout並設置一個onclick聽衆:

XML:

<LinearLayout 
    android:id="@+id/?????????" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="btnHandler" > 
</LinearLayout> 

類:

public class MainActivity extends Activity { 
    //.... 

    public void btnHandler(View v){ 
     switch(v) 
     { 
      case R.id.????? : 
     } 
    } 
} 
+0

我認爲ID是不是你的問題就在這裏,你有tu把佈局'android:clickable = true',因爲你已經是addi了這個ID,不是嗎? – zozelfelfo

回答

7

既然你有這個

<LinearLayout 
android:id="@+id/linearlayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:onClick="btnHandler" > 
</LinearLayout> 

你可以做如下

public void btnHandler(View v) 
    { 
     switch(v.getId()) // use v.getId() 
    { 
     case R.id.linearlayout : 
     break; // also don't forget the break; 
    } 

    } 

編輯:

如果你有按鈕,然後你可以做下面。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/linearlayout" 
    android:onClick="clickEvent" 
    android:orientation="vertical" > 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/bt1" 
    android:text="button" 
    android:onClick="clickEvent" 
    /> 

</LinearLayout> 

然後在你的活動的活動

public void clickEvent(View v) 
{ 
     switch(v.getId()) 
     { 
      case R.id.linearlayout : 
       Log.i("......"," linear layout clicked"); 
      break; 
      case R.id.bt1 : 
     Log.i("......"," button clicked"); 
      break; 
     } 
} 
+0

我想添加一個onClickListener到佈局,而不是一個按鈕。 –

+0

@ZbarceaChristian抱歉錯了。 – Raghunandan

+0

@ZbarceaChristian檢查編輯也。 – Raghunandan

2

最簡單的方法是隻需添加它在你的佈局xml中:

<LinearLayout 
    android:id="@+id/myId" <!-- the part where the id is being created --> 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="btnHandler" > 
</LinearLayout> 

然後可以通過your.package.R.id.myId從您的代碼中引用它。

1
<LinearLayout 
    android:id="@+id/lineaLayoutId" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="btnHandler" > 
</LinearLayout> 
public class MainActivity extends Activity { 
    //.... 

    public void btnHandler(View v){ 
     switch(v) 
     { 
      case R.id.lineaLayoutId : 
      break; 
     } 
    } 
} 
0

在的onCreate():

findViewById(R.id.?????????).setOnClickListener(this); 

,有你的活動實施View.OnClickListener。

@Override 
public void onClick(View view) { 
    if(view.getId() == R.id.?????????) { 
     //your code for on click 
    } 
} 
3

而不是

switch(v) 

使用

switch(v.getId()) 

,並從XML設置你的ID

android:id="@+id/idValue" 
+0

好,我的朋友。儘管對於那些知道原因的人來說相當明顯,但也許你可以在其中做些簡單的解釋。 – codeMagic