2014-02-05 7 views
2

동적 텍스트 뷰를 구현했습니다. 동적으로 생성 된 텍스트 뷰를 볼 수 있습니다. 그러나 스크롤 뷰를 구현해야합니다.스크롤보기가 작동하지 않습니다. Android

1. 코드 만 사용하십시오.

친절히 도움.
어떻게 이러한 2 가지 기능을 수행합니까?

linearLayout = findViewById(R.id.dynamicTextview1); 

XML 코드 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/dynamicTextview1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/Ivory" 
    android:orientation="vertical" > 



</LinearLayout> 
아래 코드는 (동적으로하지만 스크롤 기능없이 화면에있는 모든 텍스트 뷰와 디스플레이를 얻을 수)

TextView[] textViewArray = new TextView[iterator]; 

      for(int i = 0; i < iterator; i++) { 
        textViewArray[i] = new TextView(narutoLinksOnly.this); 
        textViewArray[i].setText(narutoLinkHeadingName[i]); 
        textViewArray[i].setId(i); 
        textViewArray[i].setTextColor(0xff000000); 
        textViewArray[i].setTextSize(20); 
        textViewArray[i].setOnClickListener(this); 

        textViewArray[i].setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));//suggested 
        //textViewArray[i].setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

        ((LinearLayout) linearLayout).addView(textViewArray[i]); 

       } 

내부에서 OnCreate 잘 작동합니다

+1

XML에서 linearlayout을 scrollview에 넣으십시오. – Ranjit

+0

@RanjitPati 예 그 방법은 :). 그러나 우리는 XML을 사용하여 동일한 것을 정의하는 것이 아니라 코드를 사용하여 어떻게 달성 할 수 있습니까? – SeasonalShot

+0

xmlns : android = "http://schemas.android.com/apk/res/android"스크롤 레이아웃의 부모 요소 –

답변

1

다른 값과 이름으로 편집기에서 다시 시도했지만 개념은 동일합니다.

public class MainActivity extends Activity implements OnClickListener { 
    ScrollView scrollView; 
    LinearLayout linearLayout; 
    String[] narutoLinkHeadingName = { "abcv", "bvvvv", "cvvvv", "dvvvv", 
     "avvvv", "bvvvv", "cvvvv", "d", "a", "b", "c", "d", "a", "b", "c", 
     "d", "avvvv", "b", "c", "d", "a", "vvvb", "c", "vvvvd", "a", 
     "vvvb", "cvvvv", "vvvvd" }; 

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

    linearLayout = (LinearLayout) findViewById(R.id.dynamicTextview1); 

    scrollView = new ScrollView(MainActivity.this); 
    scrollView.setBackgroundColor(Color.BLUE); 

    TextView[] textViewArray = new TextView[narutoLinkHeadingName.length]; 

    for (int i = 0; i < narutoLinkHeadingName.length; i++) { 
     textViewArray[i] = new TextView(MainActivity.this); 
     textViewArray[i].setText(narutoLinkHeadingName[i]); 
     textViewArray[i].setId(i); 
     textViewArray[i].setTextColor(0xff000000); 
     textViewArray[i].setTextSize(20); 
     textViewArray[i].setOnClickListener(this); 
     textViewArray[i].setLayoutParams(new LinearLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));// suggested 

     ((LinearLayout) linearLayout).addView(textViewArray[i]); 
    } 
    if(((ViewGroup)linearLayout.getParent()) != null){ 
     ((ViewGroup)linearLayout.getParent()).removeView(linearLayout); 

     scrollView.addView(linearLayout); 
     addContentView(scrollView, new LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 
    }else{ 
     scrollView.addView(linearLayout); 
     addContentView(scrollView, new LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 
    } 

} 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
    } 

    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 

    } 

    } 

내 레이아웃 즉 activity_main.xml :

내 활동 클래스 즉 MainActivity.java

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/dynamicTextview1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#ff00ff" 
android:orientation="vertical" > 
</LinearLayout> 

지금은 완벽하게 수직 스크롤과 수평 스크롤 당신은을 사용할 수 있습니다 개발자 사이트의 HorizontalScrollView

참고 : 우리는() 방법은, 그렇지 않으면 같은 IllegalStateException이 지정된 아이가 이미 부모가 줄 수 removeView 돌봐해야합니다. 먼저 부모의 removeView()를 호출해야합니다.

+0

스크롤 뷰는 wrap_content가 아닌 match_parent 여야하며, 반면 TextView는 wrap_content (스크롤 뷰가 onMeasure 및 onLayout 동안 크기를 측정 할 수 있어야 함)이어야합니다. 마지막으로 FILL_PARENT를 사용하지 마십시오. FILL_PARENT는 사용되지 않습니다. –

+0

Thanks Martin ... – Ranjit

+0

@Ranjit scrollView.addView (linearLayout)를 수행 할 때; 당신은 선형 레이아웃 또는 그 반대로 스크롤 뷰를 넣고 있습니까? – SeasonalShot

0

여러분의 linearlayout을 xml의 scrollview 안에 넣기 만하면됩니다.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentTop="true" > 
<LinearLayout 
    android:id="@+id/dynamicTextview1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/Ivory" 
    android:orientation="vertical" > 



</LinearLayout> 
</ScrollView> 
+0

사실 내 질문을 편집했습니다. 코드를 사용하여이 작업을 수행 할 필요가 있습니다. 제안 된 방법은 작동하지만, 코드를 사용하여 동일한 결과를 얻으려고합니다. – SeasonalShot

+0

scrollView에보기를 추가 할 때 하위 레이아웃 높이는 wrap_content 여야합니다. – Piyush

관련 문제