在scrollview中设置内容? Android的

时间:2014-08-24 13:30:07

标签: android onclick android-linearlayout relativelayout android-scrollview

我有Xml LinearLayoutRelativeLayout ScrollView programmatically添加Text。当我添加OnclickButton <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ScrollView android:id="@+id/scrollID" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" > </ScrollView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:baselineAligned="true" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:weightSum="1" > <EditText android:id="@+id/txtInpuConversation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.5" android:hint="Text" > <requestFocus /> </EditText> <Button android:id="@+id/btnSend" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="0.5" android:text="Click" /> </LinearLayout> </LinearLayout> 时第一次给我看消息,但第二次让我崩溃:

   public class MainActivity extends Activity {
    String Medtconversation;
    EditText edtconversation;
    TextView txtviewUser;
    LinearLayout rilative;
    RelativeLayout relativeLayout;
    LinearLayout firstLinearLayout;
    ScrollView sclView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edtconversation = (EditText) findViewById(R.id.txtInpuConversation);
        sclView = (ScrollView) findViewById(R.id.scrollID);
        Button btn = (Button) findViewById(R.id.btnSend);



         final Context context = this;

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Medtconversation = edtconversation.getText().toString();
                txtviewUser = new TextView(MainActivity.this);
                txtviewUser.setText(Medtconversation);
                relativeLayout = new RelativeLayout(context);
                firstLinearLayout= new LinearLayout(context);
                LayoutParams LLParamsT = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                relativeLayout.setLayoutParams(LLParamsT);
                relativeLayout.addView(txtviewUser,
                        new LayoutParams(LayoutParams.WRAP_CONTENT,
                               LayoutParams.WRAP_CONTENT));

                firstLinearLayout.setOrientation(LinearLayout.VERTICAL);
                LayoutParams LLParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                firstLinearLayout.setLayoutParams(LLParams);
                firstLinearLayout.addView(relativeLayout);

Crash here now======>sclView.addView(firstLinearLayout, new
                          LayoutParams(LayoutParams.WRAP_CONTENT,
                                     LayoutParams.WRAP_CONTENT));
                edtconversation.setText("");
            }
        });
    }
}

我的代码:

click

Button RelativeLayout LinearLayout并且第二次发送消息时,我需要在scrollView中为节目创建新的 AndroidRuntime MainActivity$1.onClick(MainActivity.java:54) 。(在{{1}}中)

enter image description here

错误:

{{1}}

enter image description here

3 个答案:

答案 0 :(得分:1)

MMMMM。我建议您使用table,并且可以简单地添加programmatically TextView等等:

public class MainActivity extends Activity {
    String Medtconversation;
    EditText edtconversation;
    TextView txtviewUser;
    TextView txtviewUserT;
    RelativeLayout relativeLayout;
    LinearLayout firstLinearLayout;
    TableRow tr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edtconversation = (EditText) findViewById(R.id.txtInpuConversation);
        Button btn = (Button) findViewById(R.id.btnSend);
        final TableLayout tl = (TableLayout) findViewById(R.id.tbl);
        final Context context = this;

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Medtconversation = edtconversation.getText().toString();
                txtviewUser = new TextView(MainActivity.this);
                txtviewUserT = new TextView(MainActivity.this);
                txtviewUserT.setText("OK");
                txtviewUser.setText(Medtconversation);
                 tr = new TableRow(context);
                 tr.addView(txtviewUser);
                 tr.addView(txtviewUserT);
                 tl.addView(tr);
                edtconversation.setText("");
            }
        });
    }
} 

您的XML

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

<ScrollView
    android:id="@+id/scrollID"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <TableLayout
        android:id="@+id/tbl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >


    </TableLayout>

</ScrollView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="true"
        android:orientation="horizontal"
        android:paddingBottom="5dp"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:weightSum="1" >

        <EditText
            android:id="@+id/txtInpuConversation"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:hint="Text" >

            <requestFocus />
        </EditText>
        <Button
            android:id="@+id/btnSend"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"
            android:text="Click" />

    </LinearLayout>

</LinearLayout>

答案 1 :(得分:0)

您只创建一个新的LinearLayout和RelativeLayout(在onCreate内),但是您多次添加它们。而是从onClick方法内部创建新实例:

    final Context context = this;

    btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            LinearLayout firstLinearLayout= new LinearLayout(context);
            RelativeLayout relativeLayout = new RelativeLayout(context);
            ...
            firstLinearLayout.addView(relativeLayout);
            ...
        }
    });

答案 2 :(得分:0)

  • 首先,您需要将LinearLayout添加到ScrollView
  • 然后将relative layout添加到LinearLayout

public class MainActivity extends Activity {
    String Medtconversation;
    EditText edtconversation;
    TextView txtviewUser;
    LinearLayout rilative;
    RelativeLayout relativeLayout;
    LinearLayout firstLinearLayout;
    ScrollView sclView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edtconversation = (EditText) findViewById(R.id.txtInpuConversation);
        Button btn = (Button) findViewById(R.id.btnSend);
        sclView = (ScrollView) findViewById(R.id.scrollID);

         firstLinearLayout= new LinearLayout(this);

        relativeLayout = new RelativeLayout(this);

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Medtconversation = edtconversation.getText().toString();
                txtviewUser = new TextView(MainActivity.this);
                txtviewUser.setText(Medtconversation);

                LayoutParams LLParamsT = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                relativeLayout.setLayoutParams(LLParamsT);
                relativeLayout.addView(txtviewUser,
                        new LayoutParams(LayoutParams.WRAP_CONTENT,
                               LayoutParams.WRAP_CONTENT));



                firstLinearLayout.setOrientation(LinearLayout.VERTICAL);
                LayoutParams LLParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                firstLinearLayout.setLayoutParams(LLParams);

                sclView.addView(firstLinearLayout);
                firstLinearLayout.addView(relativeLayout);

                sclView.addView(firstLinearLayout, new
                          LayoutParams(LayoutParams.WRAP_CONTENT,
                                     LayoutParams.WRAP_CONTENT));
                edtconversation.setText("");
            }
        });
    }
}