以编程方式将图像添加到RelativeLayout
我想通过代码添加到线性布局,各种相对布局。 每个相对布局包括:左侧的imageview,右侧的文本视图(正好在中间)和右侧的另一个图像。 我必须使用从数据库读取的数据添加它们。 它必须与relativelayout相关,因为我想在图像上使用侦听器,并在RL上使用不同的侦听器。
每个相关布局看起来像我在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异常,我试着添加textView并且它工作正常。
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();
}
您正在使用(ImageView)findViewById(R.drawable.animalplanet)
并且它不是以编程方式执行此操作的正确方法。 如果你想膨胀一个ImageView
你应该做这样的事情:
RelativeLayout.LayoutParams imParams =
new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
ImageView imSex = new ImageView(context);
imSex.setImageResource(getmyImage());
imSex.setId(2);
addView(imSex,imParams);
但是,如果您只显示图像而没有可点击并从数据库加载它,我建议您使用ViewBinder
你不会创建一个新的图像,这就是为什么你得到空指针异常。 你应该做一个新的或布局膨胀一个新的。
链接地址: http://www.djcxy.com/p/14831.html