코드를 통해 다양한 레이아웃을 선형 레이아웃에 추가하고 싶습니다. 각 상대 레이아웃은 왼쪽의 이미지 뷰, 오른쪽의 텍스트 뷰 (정확히 중간) 및 오른쪽의 다른 이미지로 구성됩니다. 데이터베이스에서 읽은 데이터를 사용하여 추가해야합니다. relativelayout을 사용해야합니다. RL을 통해 이미지와 다른 청취자에 대해 청취자를 사용하고 싶기 때문입니다.프로그래밍 방식으로 RelativeLayout에 이미지 추가
각 relativelayout은 내가 XML에서 가지고있는 이런 것 같습니다.
<RelativeLayout
android:id="@+id/relativecanal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/antena3" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="39dp"
android:layout_toRightOf="@+id/imageView1"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/star" />
</RelativeLayout>
은이 코드를 사용하고 :하지만 난 이미지의 addView()를 만드는 순간에서 NullPointerException이, 내가 텍스트 뷰를 추가하는 단지 시도 얻고 그것을 작동합니다.
try {
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,archivoCanales);
LinearLayout layout = (LinearLayout) findViewById(R.id.channelslistlayout);
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
RelativeLayout channel=new RelativeLayout(this);
channel.setBackgroundColor(2);
TextView channelName=new TextView(this);
channelName.setText(new String(line));
ImageView image=(ImageView)findViewById(R.drawable.animalplanet);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
RelativeLayout.LayoutParams firstImageParams = new RelativeLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
firstImageParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
RelativeLayout.LayoutParams secImageParams = new RelativeLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
secImageParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
channel.addView(image,firstImageParams);
channel.addView(channelName,secImageParams);
layout.addView(channel,llp);
}
}
catch (IOException e) {
e.printStackTrace();
}
이미지를 사용하는 것이 좋습니다 데이터베이스에서로드하지 않고 이미지를 표시합니다. setImageResource (R.drawable.animalplanet); 그것을하는 올바른 방법이었다. 감사! – danywarner
여기 addView() 메서드는 무엇입니까? 오류가 발생합니다. "메서드 addView (ImageView, LinearLayout.LayoutParams)가 AddPhotoActivity 유형에 대해 정의되지 않았습니다." – rams
@venkataramana it 's relativeLayout.addView (imSex, imParams); 만약 당신이이 활동을 –