【问题标题】:How Can I Add Clickable Buttons at the End of Each TextView?如何在每个 TextView 的末尾添加可点击按钮?
【发布时间】:2017-02-16 18:29:55
【问题描述】:

我正在制作一个应用程序,它显示联系人及其详细信息,例如电话号码、电子邮件等,并将它们显示在 ListView 中。我想在每一行的末尾添加可点击的按钮,例如我可以单击电话号码旁边的按钮并在拨号程序中打开存储在 TextView 中的字符串,我该怎么做?我的 .xml 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ImageView android:id="@+id/imgAvatar"
    android:layout_width="70dip"
    android:layout_height="70dip"
    android:scaleType="fitCenter"
    android:src="@mipmap/ic_launcher"/>

<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView android:id="@+id/tvName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"/>

    <TextView android:id="@+id/tvPhone"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@+id/tvEmail"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@+id/tvLocation"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

</LinearLayout>

【问题讨论】:

  • 请详细说明!到目前为止你做了什么?您需要实现自定义列表视图才能实现这一目标!
  • 我有一个扩展 BaseAdapter 的适配器类和一个带有构造函数的类,用于在 TextView 中存储数据。我还有一个显示列表类,它实现 ListView 以显示存储在目录中的数据。目录显示正常,我只想添加功能,以便当我点击里面的按钮时,例如电话或电子邮件 TextView,它在拨号程序/电子邮件等中打开。
  • 我的建议:不要使用Button的点击,而是使用onclick作为textview。当单击列表行时。使用位置获取电话号码并将其用作 URI,方法是将其传递给 ACTION_DIAL 参数。
  • 谢谢你的建议,此刻,构成一个联系人的所有TextView和Avatar在触摸时都会突出显示,好像它们像一个组一样合并,我将如何去能够单独选择联系人的一部分,例如电话或电子邮件等?

标签: android xml android-studio navigation


【解决方案1】:

xml 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ImageView android:id="@+id/imgAvatar"
        android:layout_width="70dip"
        android:layout_height="70dip"
        android:scaleType="fitCenter"
        android:src="@mipmap/ic_launcher"/>

    <LinearLayout android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView android:id="@+id/tvName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textStyle="bold"/>

        <TextView android:id="@+id/tvPhone"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

        <TextView android:id="@+id/tvEmail"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

        <TextView android:id="@+id/tvLocation"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
//add button where you want and type the code: android:onClick="functionName"


    </LinearLayout>

Java 文件:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       public void functionName(View view){
//set of codes you want to perform

}
    }

}

【讨论】:

    【解决方案2】:

    你可以在你的java文件中定义你的按钮的可点击功能!

    在您的 xml 文件中添加代码:-

    <Button
            android:id="@+id/bun"
            android:text="click"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    

    java 文件:

    public class MainActivity extends AppCompatActivity {
    
    private Button b;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
             b = (Button) view.findViewById(R.id.bun);
            b.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
    //set codes u want to perform
                    }
                }
            });
        }
    
    }
    

    【讨论】:

    • 您好,感谢您的帮助,如果可能的话,我希望按钮对齐到 TextView 字段的右侧,我该怎么做?
    • 看看我的新答案,按钮向右对齐!
    【解决方案3】:

    这是你的 xml 文件,它在你的 textview 右侧显示按钮 如你所愿! :)

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_marginLeft="10dp"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/imgAvatar"
            android:layout_width="70dip"
            android:layout_height="70dip"
            android:scaleType="fitCenter"
            android:src="@mipmap/ic_launcher" />
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:orientation="vertical">
    
                <TextView
                    android:id="@+id/tvName"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="asdffgh"
                    android:textStyle="bold" />
    
                <TextView
                    android:id="@+id/tvPhone"
                    android:layout_width="fill_parent"
    
                    android:layout_height="wrap_content"
                    android:text="asdffgh" />
    
                <TextView
                    android:id="@+id/tvEmail"
                    android:layout_width="fill_parent"
    
                    android:layout_height="wrap_content"
                    android:text="asdffgh" />
    
                <TextView
                    android:id="@+id/tvLocation"
                    android:layout_width="fill_parent"
    
                    android:layout_height="wrap_content"
                    android:text="asdffgh" />
            </LinearLayout>
    
            <Button
                android:id="@+id/bun"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="click" />
        </RelativeLayout>
    </LinearLayout>
    

    【讨论】:

      【解决方案4】:
      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="horizontal" android:layout_width="fill_parent"
      android:layout_height="fill_parent">
      
      <ImageView android:id="@+id/imgAvatar"
          android:layout_width="70dip"
          android:layout_height="70dip"
          android:scaleType="fitCenter"
          android:src="@mipmap/ic_launcher"/>
      
      <LinearLayout android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content">
      
      <LinearLayout android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content">
          <TextView android:id="@+id/tvName"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textStyle="bold"/>
          <ImageView android:id="@+id/yourClickableImage"
          android:layout_width="70dip"
          android:layout_height="70dip"
          android:scaleType="fitCenter"
          android:src="@drawable/yourClickableImage"/>
      
      </LinearLayout>
      
          <LinearLayout android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content">
          <TextView android:id="@+id/tvPhone"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textStyle="bold"/>
          <ImageView android:id="@+id/yourClickableImage"
          android:layout_width="70dip"
          android:layout_height="70dip"
          android:scaleType="fitCenter"
          android:src="@drawable/yourClickableImage"/>
      
      </LinearLayout>
      
      
        <LinearLayout android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content">
          <TextView android:id="@+id/tvEmail"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textStyle="bold"/>
          <ImageView android:id="@+id/yourClickableImage"
          android:layout_width="70dip"
          android:layout_height="70dip"
          android:scaleType="fitCenter"
          android:src="@drawable/yourClickableImage"/>
      
      </LinearLayout>
      
      
          <LinearLayout android:orientation="horizontal"
          android:layout_width="fill_parent"`enter code here`
          android:layout_height="wrap_content">
          <TextView android:id="@+id/tvLoation"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textStyle="bold"/>
          <ImageView android:id="@+id/yourClickableImage"
          android:layout_width="70dip"
          android:layout_height="70dip"
          android:scaleType="fitCenter"
          android:src="@drawable/yourClickableImage"/>
      
      </LinearLayout>
      
      
      </LinearLayout>
      
      </LinearLayout>
      

      告诉我这是你想要的方式吗?告诉我,我会为你编辑它:)。

      【讨论】:

      • 您好,很遗憾,您提供的代码没有显示很多语法错误。
      • 现在试试 我已经做了一些改变。它应该可以工作,否则会给我错误。
      猜你喜欢
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      相关资源
      最近更新 更多