【问题标题】:how to set a customview to center of an activity in android?如何在android中将customview设置为活动的中心?
【发布时间】:2014-10-31 05:08:53
【问题描述】:

我已经为 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);

自定义视图

public class GifwebView extends WebView {

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

}

【问题讨论】:

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


    【解决方案1】:

    你的activity主布局(RelativeLayout),它的高度和宽度应该是ma​​tch_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);
    

    【讨论】:

    • 我已经按照你的修改了我的代码,但是这里没有任何变化。它不起作用..!
    • 我已经用 TextView 测试了代码并且它正在工作。确保在 XML 布局中将 RelativeLayout 的高度和宽度设置为 match_parent,将重力设置为中心,并将自定义视图的宽度和高度设置为包裹内容,只需将其添加到相对布局中,它应该位于中心。如果没有,那么您的自定义视图中肯定有问题。为自定义视图提供代码以查看问题所在。
    • Marko..但我的视图是 customView 而不是 textview。!
    • 我会在晚上晚些时候回家时尝试一下,并会回复您。 WebView 可能有问题。虽然我宁愿显示原始 Android 的进度对话框/栏以进行加载,但这会让事情变得更容易并且看起来更好。
    • 但是可以将 gif 图像放入 preogressDialog 吗?anroid 不支持 Gif 文件格式,我想制作一个像“500px”应用程序这样的进度对话框..
    【解决方案2】:
    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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-22
      • 2019-04-16
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多