我正在尝试将自定义视图水平居中放置在相对布局上。 但是它不会显示居中,而是靠近屏幕的左侧。
以下是我的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="5sp"
tools:context=".FinalActivity" >
<ImageView
android:contentDescription="@string/none"
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_marginLeft="0px"
android:layout_marginTop="0px"
android:scaleType="fitXY"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/oven_alt" />
<com.test.game.myviewx
android:id="@+id/xview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
/>
<ImageView
android:contentDescription="@string/none"
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_marginLeft="0px"
android:layout_marginTop="0px"
android:scaleType="fitXY"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/oven_ust" />
</RelativeLayout>
这是自定义视图类:
public class myviewx extends View
{
Context cntx;
public myviewx(Context context) {
super(context);
cntx = context;
// TODO Auto-generated constructor stub
}
public myviewx(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
cntx = context;
// TODO Auto-generated constructor stub
}
public myviewx(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
cntx = context;
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences sharedPreferences = cntx.getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE);
Integer pb = sharedPreferences.getInt("pb", 0);
Bitmap bitmap;
Resources res = getResources();
if (pb==1) {
bitmap = BitmapFactory.decodeResource(res, R.drawable.p1);
}
else {
bitmap = BitmapFactory.decodeResource(res, R.drawable.p2);
}
//int x=500;
//int y=500;
//int radius=250;
Paint paint=new Paint();
// Use Color.parseColor to define HTML colors
//paint.setColor(Color.parseColor("#CD5C5C"));
//canvas.drawRect (250,250, 750, 750, paint);
//paint.setColor(Color.parseColor("#CD000C"));
//canvas.drawCircle(x,x, radius, paint);
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
使用参数&#34; android:layout_centerHorizontal =&#34; true&#34;&#34; ,图像视图集中,但&#34; com.test.game.myviewx&#34;自定义视图不居中。
我错过了什么?
答案 0 :(得分:0)
我遇到了同样的问题,找不到解决方法。 结束以中心绘制视图的内容。 你可以使用&#34; this.getWidth()&#34;然后相应地绘制所有内容。