6

如何为布局定义 ID?

我正在尝试将 ID 添加到线性布局并设置 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.????? :
       }
    }
}
4

6 回答 6

8

既然你有这个

 <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;
       }
}
于 2013-07-04T13:43:22.930 回答
4

代替

switch(v)

利用

switch(v.getId())

并从 xml 设置您的 id

android:id="@+id/idValue"
于 2013-07-04T13:47:56.683 回答
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.

于 2013-07-04T13:41:33.910 回答
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;
       }
    }
}
于 2013-07-04T13:43:11.913 回答
0

在您的活动的 onCreate() 中:

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

并让您的 Activity 实现 View.OnClickListener。

@Override
public void onClick(View view) {
    if(view.getId() == R.id.?????????) {
        //your code for on click
    }
} 
于 2013-07-04T13:45:11.413 回答
0

这可以工作..

XML

<LinearLayout
 android:id="@+id/mylayout"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal">
</LinearLayout>

JAVA

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
    LinearLayout myLayout = findViewById(R.id.mylayout);
    myLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Click over Layout", Toast.LENGTH_SHORT).show();
        }
    });

}

于 2018-07-02T15:38:08.793 回答