我试图多次给视图充气。 我的视图包含一个图像视图和一个位于其下方的文本视图,并将其放置在特定位置。
以下是我多次充气的 item.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="100dp"
android:background="@android:color/holo_blue_dark"
android:layout_height="100dp">
<ImageView
android:layout_gravity="center"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@mipmap/ic_launcher"
android:id="@+id/imageView"/>
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="20dp"
android:textSize="12sp"
android:textStyle="bold"
android:text="Large Text"
android:id="@+id/textView" />
</LinearLayout>
这是我的扩充代码:
for (int i = 0; i < 1; i++) {
final View v = linf.inflate(R.layout.item, null);
TextView tvs = (TextView) v.findViewById(R.id.textView);
ImageView ivs = (ImageView) v.findViewById(R.id.imageView);
tvs.setText(i+"");
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100, 100);
int w = (mWidth/2)-50;
int h =(mHeight/2)-50;
params.leftMargin = w;
params.topMargin = h;
Log.e("W-H", mWidth + "-" + mHeight);
rr.addView(v,params);
}
我能够成功放置 item.xml 但是它的设置不合适我已将高度和宽度设置为100dp。
这是我得到的 here
答案 0 :(得分:0)
LayoutParams
的构造函数以像素为单位,因此您必须转换为dps才能在屏幕上正确显示。这可以在this stackoverflow answer中完成:
int width_dps = 100;
int height_dps = 100;
final float scale = MainActivity.this.getResources().getDisplayMetrics().density;
int width_pixels = (int) (width_dps * scale + 0.5f);
int height_pixels = (int) (height_dps * scale + 0.5f);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width_pixels, height_pixels);
或者,如果您使用固定大小,则可以更新xml以允许wrap_content
正常工作。您将覆盖LinearLayout
参数,以便更新子视图:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
并更新子视图(android:layout_width="100dp"
):
<TextView
android:gravity="center"
android:layout_width="100dp"
android:layout_height="20dp"
android:textSize="12sp"
android:textStyle="bold"
android:text="Large Text"
android:id="@+id/textView" />