如何创建一个组件,并在xml页面上使用一个按钮?



基本上,这就是我现在的代码…

ViewCard活动

import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import com.team46.stubank.R;
public class DisplayCards extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_cards);
}
public void viewCard(View view){
Intent intent = new Intent(this, ViewCard.class);
startActivity(intent);
}

@SuppressLint("SetTextI18n")
public void toggleDetails(View view){
Switch simpleSwitch = findViewById(R.id.switch1);
TextView tv = findViewById(R.id.textView4);
TextView tv1 = findViewById(R.id.textView);
TextView tv2 = findViewById(R.id.textView5);
TextView tv3 = findViewById(R.id.textView6);
if (simpleSwitch.isChecked()){
tv.setText("card.getCardNumber");
tv1.setText("user.getName");
tv2.setText("card.getSortCode");
tv3.setText("card.getAccountNumber");
//needs to call getter methods from card and user classes
}
else{
tv.setText("0000-0000-0000-0000");
tv1.setText("Joe Bloggs");
tv2.setText("11-11-11");
tv3.setText("3411-4885-6324-7195");
}
}
}

xml页面:

?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".card_activities.DisplayCards">
<androidx.cardview.widget.CardView
android:layout_width="362dp"
android:layout_height="172dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="100dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:onClick="viewCard"
app:cardBackgroundColor="#6C4095"
app:cardCornerRadius="20dp"
app:cardElevation="15dp"
app:cardMaxElevation="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="viewCard">
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:fontFamily="@font/roboto_medium"
android:text="@string/card_number_default"
android:textColor="#FFFFFF"
android:textSize="22sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:fontFamily="@font/roboto_medium"
android:text="@string/name_default"
android:textColor="#FFFFFF"
android:textSize="16sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView2" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="59dp"
android:layout_height="47dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/mastercard_small" />
<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:fontFamily="@font/roboto_medium"
android:onClick="toggleDetails"
android:text="@string/toggle_card_details"
android:textColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="14dp"
android:fontFamily="@font/roboto_medium"
android:text="@string/sortcode_default"
android:textColor="#FFFFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:fontFamily="@font/roboto_medium"
android:text="@string/account_number_default"
android:textColor="#FFFFFF"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="79dp"
app:cardBackgroundColor="#6d0095"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/cards_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_medium"
android:text="@string/cards_menu"
android:textColor="#FFFFFF"
android:textSize="36sp" />
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

这里的代码基本上是一个带有卡片的屏幕,由各种组件组成,以类似于包含用户信息的信用卡/借记卡。和这个类似。我想做的是允许用户添加多个"卡片"。通过点击按钮。我不知道该怎么做,所以请帮助我,我将不胜感激。

您有3种(我认为)基本的方法来做到这一点-它们都涉及到将单个卡片布局拉到自己的XML文件中:

  • 使用布局作为ListView的列表项,或者(最好)RecyclerView中的ViewHolder。每个项目都有一个卡片布局,你可以设置细节——每个卡片的实际数据存储在一个列表中,你只需要显示适当的东西
  • 创建一个自定义的View(复合控件,只是捆绑一些Views在一起),从FrameLayout继承,并膨胀到你的XML布局。这样,每个卡片都是它自己的对象,你可以在任何其他布局中使用它们作为小部件
  • 使每张卡都成为Fragment,这比创建View简单一点(因为它为您处理所有布局膨胀的东西),但在将它们添加到布局方面可能有点困难。

这取决于你想要什么-一个简单的列表与RecyclerView可能是最好的,如果你想要灵活性,你可以自定义View和粘贴其中一个在一个基本的布局和使用作为ViewHolder布局

最新更新