自定义视图水平居中放置在RelativeLayout上

时间:2018-06-16 22:43:04

标签: android

我正在尝试将自定义视图水平居中放置在相对布局上。 但是它不会显示居中,而是靠近屏幕的左侧。

以下是我的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_centerHorizo​​ntal =&#34; true&#34;&#34; ,图像视图集中,但&#34; com.test.game.myviewx&#34;自定义视图不居中。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,找不到解决方法。 结束以中心绘制视图的内容。 你可以使用&#34; this.getWidth()&#34;然后相应地绘制所有内容。