【发布时间】:2015-09-13 18:42:15
【问题描述】:
我的布局有问题,如果有 Android 专家可以检查并帮助我,那就太好了:)
我有一个 FragmentA,其中包含另一个 FragmentB。
-
FragmentA 包含 3 个 FrameLayout:
- FrameLayout:应该在顶部
- FrameLayout:应该在第一个包含FragmentB的下方(id= frame2)
- FrameLayout:应该在底部
-
FragmentB 还包含 1 个 FrameLayout:
- 我以这种方式以编程方式将视图(例如图像)添加到此 FrameLayout:
frameLayout.addView(new ImageClass(id);
问题是,图片不在中间水平居中。
这是第一个fragmentA的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frame1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/frame2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frame1" />
<FrameLayout
android:id="@+id/frame3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
</RelativeLayout>
这是fragmentB的布局文件(包含在FragmentA -> FrameLayout 2中,ID为frame2)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/imageClass"
android:background="#0000FF"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</FrameLayout>
并且图像将使用此代码通过画布插入到视图中:
Bitmap image= BitmapFactory.decodeResource(getResources(), id);
canvas.drawBitmap(image, 0, 0, null);
我认为android:gravity="center_horizontal" 在RelativeLayout 和android:layout_width="wrap_content" 在FrameLayouts 的FragmentA 和FragmentB 中,图像应该居中。但它在左侧。
有两个屏幕截图,它的外观(第一)和它的外观(第二):
对不起链接,但我不能发布图片(没有足够的声誉)
【问题讨论】:
-
你试过
android:layout_centerHorizontal="true"insideRelativeLayout吗? -
是的,我在 RelativeLayout 和 FrameLayout 内部都试过了
-
使用
canvas.drawBitmap有什么具体原因吗?您可以只使用ImageView并将位图设置为它的源。确保 ImageView 是wrap_content。 -
是的,我必须使用cancas,因为我在图像上画了一些线条
-
如果您使用的是画布,那么您需要在
onMeasure函数中设置自定义视图的适当大小。否则它将占据屏幕的整个长度。参考这个:stackoverflow.com/questions/5042197/…
标签: java android android-layout android-fragments canvas