如何在CardView内以编程方式创建对象(即TextView)?

时间:2018-12-27 17:08:56

标签: java android

我想制作一个具有此功能的新闻通讯应用程序,以便自己撰写帖子。 我正在尝试为按钮编写代码,但我一时陷入困境。我不知道如何在新的cardView中为新的textView设置位置。

这是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);


    }

    }

抱歉,这是一个愚蠢的问题。我是android开发的新手。

1 个答案:

答案 0 :(得分:0)

对于初学者来说,我假设您在MainActivity内至少有一个按钮,它将触发创建卡片视图的过程。因此,为回答您的问题,我将以编程方式从头开始创建一个全新的名片视图。删除您需要的元素,例如textview,按钮等。

// 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);
        }
    });

这里要注意的一件事是函数末尾的relativeLayout。您将需要有一个父布局,您将在其中放置卡片视图。当然,可以根据需要修改属性,即settext,backgroundcolour等。

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

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