我想将视图添加到Android LinearLayout,但它不起作用。我究竟做错了什么?

时间:2016-12-09 03:24:00

标签: android android-linearlayout

就像我说的,我想为Android LinearLayout添加视图,但它不起作用。我究竟做错了什么。我希望像这样插入它们:

[ Click Me ]
added_view_01
added_view_02
added_view_03
etc.

以下是 activity_main.xml

的内容
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Me"
        android:onClick="addRow"/>

    <LinearLayout
        android:id="@+id/my_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="bottom"/>
</LinearLayout>

这就是我对MainActivity.java的看法。

public class MainActivity extends AppCompatActivity {

    private static int iterator = 0;

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

    public void addRow(View view){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
        StringBuffer stringBuffer = new StringBuffer();
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        LinearLayout linearLayout = (LinearLayout)findViewById(R.id.my_layout);

        TextView textView = new TextView(this);
        textView.setLayoutParams(layoutParams);
        textView.setTextSize(34);
        stringBuffer.append("Timestamp: ");
        stringBuffer.append(sdf.format(new Date()));

        textView.setText(stringBuffer.toString());

        linearLayout.addView(textView, iterator);
        iterator++;
    }
}

当然,如果我将linearLayout.addView(textView, iterator);更改为linearLayout.addView(textView, 0);,它会替换位置0处的视图,但它永远不会附加新视图。如何让它继续追加新视图?

由于

2 个答案:

答案 0 :(得分:1)

你至少应该看到一个视图。但是当你添加它时它会占用整个屏幕。

  

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

尝试将height参数更改为WRAP_CONTENT

答案 1 :(得分:1)

尝试改变你的这一行:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);