Android 自定义视图在xml布局中不居中
我有一个自定义视图,我必须把它放在一个线性布局中,并把布局放在重力=中心。 这是自定义视图:Android 自定义视图在xml布局中不居中,android,xml,gravity,custom-view,Android,Xml,Gravity,Custom View,我有一个自定义视图,我必须把它放在一个线性布局中,并把布局放在重力=中心。 这是自定义视图: public class GIFView extends View{ private Movie movie; private InputStream is; private long moviestart; public GIFView(Context context) { super(context); is=context.getResou
public class GIFView extends View{
private Movie movie;
private InputStream is;
private long moviestart;
public GIFView(Context context) {
super(context);
is=context.getResources().openRawResource(R.drawable.anim_cerca);
movie=Movie.decodeStream(is);
}
public GIFView(Context context, AttributeSet attrs)
{
super(context, attrs);
is=context.getResources().openRawResource(R.drawable.anim_cerca);
movie=Movie.decodeStream(is);
}
public GIFView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
is=context.getResources().openRawResource(R.drawable.anim_cerca);
movie=Movie.decodeStream(is);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
long now=android.os.SystemClock.uptimeMillis();
Paint p = new Paint();
p.setAntiAlias(true);
if (moviestart == 0)
moviestart = now;
int relTime = (int)((now - moviestart) % movie.duration());
movie.setTime(relTime);
movie.draw(canvas,0,0);
this.invalidate();
}
}
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@drawable/sfondo">
<LinearLayout android:id="@+id/linearLayout2"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1"
android:layout_height="fill_parent" android:weightSum="1"
android:layout_width="fill_parent" android:orientation="horizontal">
<ImageView android:layout_height="wrap_content" android:id="@+id/imageView1"
android:src="@drawable/trovachiavi" android:layout_width="wrap_content"
android:layout_marginTop="10dp" android:layout_marginLeft="5dp"></ImageView>
<ImageButton android:id="@+id/infoButton"
android:background="@null" android:layout_height="47dp"
android:layout_marginLeft="5dip" android:layout_weight="0.25"
android:layout_marginTop="15dip" android:src="@drawable/info_mini"
android:layout_width="47dp">
</ImageButton>
</LinearLayout>
</LinearLayout>
<ImageButton android:id="@+id/avvia_cerca"
android:background="@null" android:layout_gravity="center|bottom"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_marginTop="10dp"></ImageButton>
<LinearLayout android:id="@+id/layoutGIF"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:orientation="vertical">
<spazio.digitale.com.GIFView android:id="@+id/gIFView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"></spazio.digitale.com.GIFView>
</LinearLayout>
</LinearLayout>
如果我将自定义视图置于其他元素之上,并在设备上运行它,这些元素将不会显示。当xml在这里完成时,我将所有其他元素放在自定义视图之上,因此它们会显示出来,但自定义视图并没有在布局中居中。我能做什么?你可以用
<LinearLayout android:id="@+id/layoutGIF"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:orientation="vertical" android:weightSum="1">
<spazio.digitale.com.GIFView android:id="@+id/gIFView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.8"></spazio.digitale.com.GIFView>
</LinearLayout>
但我建议您使用动画
而不是gif您可以使用
<LinearLayout android:id="@+id/layoutGIF"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:orientation="vertical" android:weightSum="1">
<spazio.digitale.com.GIFView android:id="@+id/gIFView1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.8"></spazio.digitale.com.GIFView>
</LinearLayout>
但我建议您使用动画
代替gif