Java 如何实现以下图像+;安卓应用程序中的文本输入按钮?

Java 如何实现以下图像+;安卓应用程序中的文本输入按钮?,java,android,xml,Java,Android,Xml,我正在尝试在我的应用程序中创建一个带有图标的可点击电话号码按钮。我检查了一些参考资料,发现谷歌地图的实现很好。如何在我的应用程序中实现这一点 我尝试了图像按钮视图,但这并不能解决问题。我已经为文本和图像视图添加了“onClick”属性,但是按钮动画不在那里,文本和图像图标也不在一起 请指导我使用什么视图来获得图像中的效果,以及如何在点击按钮时获得动画。还是有更好的方法来实现这一点 我知道意图,所以那部分很清楚 如果您能让我知道如何在按住该按钮的同时将该电话号码自动复制到剪贴板,那将非常棒。试试这

我正在尝试在我的应用程序中创建一个带有图标的可点击电话号码按钮。我检查了一些参考资料,发现谷歌地图的实现很好。如何在我的应用程序中实现这一点

我尝试了图像按钮视图,但这并不能解决问题。我已经为文本和图像视图添加了“onClick”属性,但是按钮动画不在那里,文本和图像图标也不在一起

请指导我使用什么视图来获得图像中的效果,以及如何在点击按钮时获得动画。还是有更好的方法来实现这一点

我知道意图,所以那部分很清楚


如果您能让我知道如何在按住该按钮的同时将该电话号码自动复制到剪贴板,那将非常棒。

试试这段代码。

根据您的用途更改间距尺寸,并更改图标


一些问题:

  • 你有Android开发的经验吗
  • 如果是这样,您是否有任何正在运行的产品
我想你确实有经验,但你在开始编写任何代码之前都会问。有很多方法可以实现这一点,最简单的方法是使用自定义listview()并在listview中使用一个项目来显示电话号码。每个listview项都有一个setOnItemLongClickListener,您可以使用它,并在其中使用剪贴簿管理器复制或使用电话呼叫服务的意图

list.setOnItemLongClickListener(new OnItemLongClickListener() { //list is my listView

        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                final int pos, long id) {
        //Whatever you wanna do
            ClipboardManager clipboard = (ClipboardManager) 
            getSystemService(Context.CLIPBOARD_SERVICE); 
            ClipData clip = ClipData.newPlainText(label, text);
            clipboard.setPrimaryClip(clip);
        }
});
list.setOnItemLongClickListener(新的OnItemLongClickListener(){//list是我的listView
@凌驾
长单击(AdapterView arg0、视图arg1、,
最终整数位置,长id){
//你想干什么都行
剪贴板管理器剪贴板=(剪贴板管理器)
getSystemService(Context.CLIPBOARD\u服务);
ClipData clip=ClipData.newPlainText(标签,文本);
剪贴板.setPrimaryClip(clip);
}
});

我相信这就是你想要实现的目标

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!--Your other layouts-->

    <TextView
        android:background="?selectableItemBackground"
        android:focusable="true"
        android:clickable="true"
        android:padding="@dimen/activity_vertical_margin"
        android:drawableStart="@drawable/ic_phone"
        android:drawablePadding="16dp"
        android:text="The mobile number here"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

android:background=“?selectableItemBackground”

这将在单击时添加ripple(或任何内容)的默认系统动画。 此外,android:focusable=“和android:clickable=“true”也是这项工作所必需的。 如果要自定义单击事件,最好在视图的后台使用
选择器

对于“复制到剪贴板”功能,您可以参考其他答案


快乐编码!

想想主布局,我们在其中添加了具有线性布局的每个项目。我认为您应该使用ContrainLayout。@PareshMayani是的,我们也可以使用ConstraintLayout。@akshay我还添加了一个代码来复制点击事件的编号。我正在学习udacity上的android开发,并在课程中创建一个应用程序作为项目。我会试试这个。谢谢你的解决方案,同时如果你能详细阐述一下,那就太好了。这使得实现我所需要的非常简单。谢谢你。另外,对于图像中的顶部和底部,我可以使用空白或其他更好的方式?-关于属性android:focusable=“和android:clickable=“true”如果您说android需要它们:background=“?selectableItemBackground”,请您说明它们之间的关系以及它们正在做什么,或者提供一些我可以找到详细解释的最佳来源,请单击此处帮助您!是的,你可以简单地使用。下面是dev.android的定义。。。对于selectableItemBackground:“需要焦点/按下状态的带边框的独立项目的背景绘制。”。“可聚焦”和“可点击”属性(顾名思义)使视图能够对点击事件做出反应。更多关于这个