为了获得更好的 UI,我想到了使用 TextView 代替 Button。单击 TextView 时,应显示应用程序的下一页。我在 XML 文件中定义了 onClick 函数,但它不起作用。
这是 XML 文件。
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:onClick="serve"
android:text="@string/Service"
android:textSize="20dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="87dp"
android:onClick="complain"
android:text="@string/Comp"
android:textSize="20dp" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginTop="121dp"
android:onClick="feed"
android:text="@string/Feedback"
android:textSize="20dp" />
Java 文件:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public void serve(View v)
{
Intent i=new Intent();
i.setClass(this,Second.class);
startActivity(i);
}
public void complain(View v)
{
Intent in=new Intent();
in.setClass(this,Third.class);
startActivity(in);
}
public void feed(View v)
{
Intent inn=new Intent();
inn.setClass(this,Fourth.class);
startActivity(inn);
}
}
最佳答案
默认情况下,TextView 是不可点击的,因此永远不会调用 onClick 操作...只需添加:android:clickable="true"
到您的每个 TextView:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:clickable="true"
android:onClick="serve"
android:text="@string/Service"
android:textSize="20dp" />
按钮和许多其他 View 需要用户交互,因此它们已经是可点击的,但不是 TextView。
此外,由于您的 onClick() 方法执行相同的基本操作,请考虑使用通用方法:
public void click(View v) {
Intent intent;
switch(v.getId()) {
case R.id.serve: // R.id.textView1
intent = new Intent(this, Second.class);
break;
case R.id.complain: // R.id.textView2
intent = new Intent(this, Third.class);
break;
case R.id.feed: // R.id.textView3
intent = new Intent();
}
startActivity(intent);
}
您需要修改每个 TextView 中的 id
和 onClick
属性,如下所示:
<TextView
android:id="@+id/serve"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:clickable="true"
android:onClick="click"
android:text="@string/Service"
android:textSize="20dp" />
关于android - 使用TextView的onClick跳转到下一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096064/