Android 如何使文本视图看起来像按钮?
我在Android中有一个ListActivity。每一行只是一个项目,它使用一些资源启动另一个活动。默认情况下,这当然是一个文本视图 我希望(我所说的“我希望”,我的意思是“客户坚持”)TextView看起来像一个按钮。如果我真的让它们成为按钮,默认的列表点击处理程序将不再工作——即使它们不可聚焦——因此我必须编写代码来手动放大包含按钮的视图并设置点击处理程序Android 如何使文本视图看起来像按钮?,android,user-interface,Android,User Interface,我在Android中有一个ListActivity。每一行只是一个项目,它使用一些资源启动另一个活动。默认情况下,这当然是一个文本视图 我希望(我所说的“我希望”,我的意思是“客户坚持”)TextView看起来像一个按钮。如果我真的让它们成为按钮,默认的列表点击处理程序将不再工作——即使它们不可聚焦——因此我必须编写代码来手动放大包含按钮的视图并设置点击处理程序 有没有办法让TextView看起来像一个没有任何按钮行为的按钮?您应该能够创建一个按钮的可绘制,并在TextView上使用 或者,您可
有没有办法让TextView看起来像一个没有任何按钮行为的按钮?您应该能够创建一个按钮的
可绘制,并在TextView
上使用
或者,您可以使用XML属性。您应该能够在布局XML文件中设置样式
有关内置平台样式的列表,请参见。不确定它会工作得多好,但它相当容易做到。试试这个:
<TextView android:layout_height="wrap_content" style="@android:style/Widget.Button" android:layout_marginRight="5sp" android:text="" android:layout_width="fill_parent"></TextView>
从我的项目中获取此完整布局:
<?xml version="1.0" encoding="utf-8"?>
<!-- Solution 1: New Button appearance -->
<!--TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@android:style/Widget.DeviceDefault.Button"
android:textAllCaps="false"
android:focusable="false"
android:clickable="false" /-->
<!-- Solution 2: Old Button appearance -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:drawable/btn_default"
android:gravity="center_vertical|center_horizontal" />
如果没有clickable=false,则不会在ListView/GridView等中激发onItemClick()
如果没有focusable=false,则在按下TextView按钮时没有按下按钮的效果。在XML TextView集合中:
android:clickable="true"
在java文件集中:
TextView youtTextView=(TextView)findViewById(R.id.yourTxt);
youtTextView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//code your button click action/event
}
});
我使用的是CursorAdapter和ListActivity-理想情况下,我永远不必调用“按钮”上的任何特定函数,因为没有代码知道它的存在。编辑答案以包含XML属性,如果您不想以编程方式进行操作,则可以使用该属性。是否可以使用某个名称来获取“默认”按钮样式?包括我自己的可绘制图像将增加程序大小,并有与平台默认图像冲突的风险。查找默认图像不是我关心的问题-用户的系统主题不同。令人惊讶的是,这不起作用。简单地使用按钮样式就足以使视图块列表单击事件。您应该能够覆盖android:clickable
属性。请看我的编辑。这很有效。谢谢您刚刚让我避免了在这个琐碎的活动中将行数加倍。这让我可以简单地将textview转换为按钮,而无需进行任何其他xml/编程更改
TextView youtTextView=(TextView)findViewById(R.id.yourTxt);
youtTextView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//code your button click action/event
}
});