AlertDialog中的可滚动Textview [Android]

时间:2013-06-27 20:54:23

标签: android scrollview android-scrollview

我希望在Alertdialog中有一个可滚动的textview。这是我在scrollDialog里面膨胀的scrollview的xml。我一直收到此错误“IllegalStateException:指定的子节点已经有父节点。您必须首先在子节点的父节点上调用removeView()。”

我的布局有问题吗?因为我只使用了一次布局。

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/invalid_recipients"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dip"
        android:layout_marginRight="16dip"
        android:layout_marginTop="4dip"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

</ScrollView>

编辑:我正在膨胀对话框并在onPostExecute方法中访问AsyncTask中的textview。这是该方法的第一部分。

        @Override
        protected void onPostExecute(Void v) {
            if (!invalidRecipientEmails.isEmpty()) {
                AlertDialog.Builder certBuilder = new AlertDialog.Builder(
                        MessageCompose.this);
                final View recipientsLayout = getLayoutInflater().inflate(R.layout.message_recipient_scrollview, null);
                final TextView recipientsTextView = (TextView) recipientsLayout.findViewById(R.id.invalid_recipients);
                recipientsTextView.setText(invalidRecipientsString);
                certBuilder.setView(recipientsTextView);
                // set rest of alertdialog attributes
            }
         }

2 个答案:

答案 0 :(得分:1)

用xml没问题。 显示您尝试使用的Java代码。

更新:您必须设置

certBuilder.setView(recipientsLayout); 

而不是

certBuilder.setView(recipientsTextView);

答案 1 :(得分:0)

来自ScrollView参考:http://developer.android.com/reference/android/widget/ScrollView.html

  

TextView类还负责自己的滚动,因此不需要ScrollView,但是将两者结合使用可以在更大的容器中实现文本视图的效果。