如何以编程方式在 CardView 中创建对象(即:文本视图)



我想制作一个具有自己发帖功能的时事通讯应用程序。我正在尝试为按钮输入代码,但一刻我被卡住了。我不知道如何在新卡片视图中为新文本视图设置位置。

这是一段来自 MainActivity 的代码.java

package com.example.rame956.test;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ScrollView scrollView = new ScrollView(this);
    }
//<...>
public void CreateNewPost(View view){
        Intent intent = new Intent(this, Main2Activity.class);
        startActivity(intent);
        CardView card = new CardView(this);
        TextView text = new TextView(this);
        ImageView image = new ImageView(this);

    }
    }

对不起,如果这是一个愚蠢的问题。我是安卓开发的新手。

对于初学者来说,我假设您的 MainActivity 中至少会有一个按钮,它将触发创建卡片视图的过程。因此,为了回答您的问题,我将从头开始以编程方式创建一个全新的卡片视图。从中取出您需要的元素,即文本视图、按钮等。

// Wiring in my 2 main aspects relativeLayout + Button
relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
button = (Button) findViewById(R.id.btn);
//my trigger but in your case, it can be anything
button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            CardView card = new CardView(mContext);
            // Set the CardView layoutParams
            LayoutParams layoutParams = new LayoutParams(
                    LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT
            );
            card.setLayoutParams(layoutParams );
            // Setting different attributes
            card.setRadius(9);
            card.setContentPadding(15, 15, 15, 15);
            card.setCardBackgroundColor(Color.parseColor("#FFC6D6C3"));
            card.setMaxCardElevation(15);
            card.setCardElevation(9);
            // Initialize a new TextView to put in CardView
            TextView tv = new TextView(mContext);
            tv.setLayoutParams(layoutParams );
            tv.setText("My CardView");
            tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 30);
            tv.setTextColor(Color.RED);
            // Put the TextView inside CardView
            card.addView(tv);
            // Finally, add the CardView in root layout
            relativeLayout.addView(card);
        }
    });

这里要注意的一件事是函数末尾的相对布局。您需要有一个父布局,您将在其中放置卡片视图。当然,属性可以根据您的需要进行修改,即设置文本、背景颜色等。

如果您只想将文本视图插入到 xml 中预先存在的 CardView。这将是相同的概念。

card = (CardView)findViewById(R.id.cardView);
//generate your textview as above....
card.addView(textView);

最新更新