如何在android中将自定义视图设置为活动的中心?

时间:2014-09-06 11:02:09

标签: android alignment layoutparams android-relativelayout layout-gravity

Progress bar not centre align我在android中为.gif图像支持制作了一个customView。我在那方面取得了成功,但目前该视图已与我活动的左上角对齐。我希望它与我活动的中心保持一致。请告诉我怎么做。

我的代码如下:

GifwebView  view = new GifwebView(this, "file:///android_asset/p3.gif");
view.setBackgroundColor(Color.parseColor("#00000000"));
RelativeLayout rel = (RelativeLayout) findViewById(R.id.rl_pics);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
rel.setBackgroundColor(Color.parseColor("#00000000"));
view.setLayoutParams(p);
rel.addView(view);

CustomView

public class GifwebView extends WebView {

    public GifwebView(Context context, String path) {
        super(context);
        // TODO Auto-generated constructor stub
        loadUrl(path);
    }

}

2 个答案:

答案 0 :(得分:1)

您的活动主要布局(RelativeLayout),它的高度和宽度应为 match_parent ,因此它将占据整个屏幕,并且它的重力应设置为 center ,这样它中的元素就会定位在屏幕的中心。

<强> XML:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rl_pics"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
</RelativeLayout>

<强>活动:

RelativeLayout rel = (RelativeLayout) findViewById(R.id.rl_pics);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

GifwebView  view = new GifwebView(this, "file:///android_asset/p3.gif");
view.setBackgroundColor(Color.parseColor("#00000000"));
view.setLayoutParams(p);

rel.addView(view);

答案 1 :(得分:0)

p.addRule(RelativeLayout.CENTER_HORIZONTAL);
view.setGravity(Gravity.CENTER_VERTICAL);

这应该有效。此外,如果您希望活动占据整个屏幕而不是需要填充内容,则应使用match_parent而不是wrap_content。

修改:如果您的自定义视图未实现setGravity(int)方法,则可以执行以下操作:

p.addRule(RelativeLayout.CENTER_HORIZONTAL|RelativeLayout.CENTER_IN_PARENT, view.getId());