2

나는이 코드를 작동시킬 수 없다. 몇 가지 힌트를 얻고 싶다. 내 연구에서 코드가 작동해야한다고 생각한다. . 기존 layout.xml의 LinearLayout에 Textviews를 추가하고 싶습니다.

I이 포함 된 기존 layout.xml 파일을 다음과 같이

<RelativeLayout style="@style/bodyLayout"> 
    <ScrollView 
     android:id="@+id/scrollBody" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fillViewport="false" 
    > 
     <LinearLayout 
      android:id="@+id/scrollLinearLayout" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
     >   

     </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 

가 그럼 난의 프로그램에 코드를 가지고 : 활동이있을 때

LinearLayout ll = new LinearLayout(this); 
    ll = (LinearLayout)findViewById(R.id.scrollLinearLayout); 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

    TextView tv = new TextView(this); 
    tv.setId(1); 
    tv.setTextSize(R.dimen.text_size_medium); 
    tv.setText("test"); 
    tv.setLayoutParams(lp); 
    ll.addView(tv); 

새로운 텍스트 뷰가 표시되지 않습니다 디 벌리고, 나는

+0

그것을 구성 요소를 새로 고쳐집니다 flow.com/questions/4203506/how-can-i-add-a-textview-to-a-linearlayout-dynamically-in-android/27781046#27781046 –

답변

2

난 당신이 새로운보기 (아무것도)를 추가하면 코드가

LinearLayout ll = (LinearLayout)findViewById(R.id.subLinear); 

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 

    TextView tv = new TextView(this); 
    tv.setId(1); 
    tv.setTextSize(15); 
    tv.setText("test adding"); 
    tv.setLayoutParams(lp); 
    ll.addView(tv); 

잘 작동 실행 한 ... I에게 분명 누락 뭔가 ... 새로운 텍스트 뷰가있는 LinearLayout 섹션에 나타납니다 알고 은 https : // stackover의 버튼 클릭 이벤트에서 다음이 줄을 추가

ll.invalidate(); 

는이 링크는 당신을 도울 수

+0

후속 조치 주셔서 감사합니다. 문제는이 라인이 내 코드 : ** LinearLayout ll = new LinearLayout (this); **이 선을 지우면 모든 것이 잘 작동합니다. 내 코드를 테스트하고 확인해 주셔서 감사 드리며 ll.invalidate(); 건배. – Telegard

+1

후속 조치에서 문제가 아니라 (이상한 것 같아서 내가 더 확인한 이유가 있음), 이것에 대한 변형을 테스트했지만 직선 숫자 값 대신 ** R.dimen.text_size_medium **를 사용하는 것과 관련이있는 것으로 보입니다 . dimens 파일에서 값은 18sp로 명시되며 setTextSize 메소드에 올바른 매개 변수로 변환되지 않습니다 ... 직선 값을 입력하면 작동합니다. 이것에 대해 더 연구해야 할 필요가 있기 때문에 값을 하드 코딩하는 것과 달리 XML 리소스에서 값을 가져오고 싶습니다. – Telegard

+0

작동하는 것처럼 보입니다 : \t tv.setTextSize (this.getApplicationContext(). getResources(). getDimensionPixelSize (R. dimen.text_size_medium)); 건배 – Telegard

관련 문제