1

我需要一些有关 Android 布局的帮助。我想要实现的是一个布局,其中灰色视图周围的视图随着屏幕尺寸的增长而增长,并且中间的视图始终居中。如果屏幕太小以至于触摸左右灰色视图的宽度应该为0...我制作了一个Imageviewer,灰色区域是图像,外部区域都有黑色背景。如果屏幕很小,图像应该与屏幕匹配。但如果它增长,图像不会缩放,但它周围的区域应该增长......我希望你明白我的意思。也许是带有水平布局的垂直线性布局?

谢谢你!

例子

4

3 回答 3

1

尝试这个:

  1. 使用相对布局
  2. 对中间(灰色)正方形使用固定尺寸,例如 400dp x 400dp
  3. 使用 android:layout_centerInParent="true" 作为灰色方块
  4. 将顶部定位在上方并且 alignParentTop=true,
  5. 底部低于且 alilgnParentBottom = true
  6. left: toTheLeft 的中心和下方的顶部,上方的底部
  7. right: toTheRight of center, below top, above bottom

开始了:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:id="@+id/center"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:background="#343434" />
    <LinearLayout
        android:id="@+id/top"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/center"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="#ababab" />
    <LinearLayout
        android:id="@+id/left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/center"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/center"
        android:layout_toLeftOf="@+id/center"
        android:background="#cfcfcf" />
    <LinearLayout
        android:id="@+id/right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/left"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/left"
        android:layout_toRightOf="@+id/center"
        android:background="#cfcfcf" />
    <LinearLayout
        android:id="@+id/bottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/center"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:background="#ababab" />
</RelativeLayout>
于 2012-12-18T19:21:12.770 回答
0

您可以通过为各种屏幕尺寸设置尺寸来处理大小屏幕,例如:

值/尺寸.xml:

<resources>
    <dimen name="margin"0dp</dimen>
</resources>

值-w480dp/dimens.xml:

<resources>
    <dimen name="margin"3dp</dimen>
</resources>

值-w600dp/dimens.xml:

<resources>
    <dimen name="margin"6dp</dimen>
</resources>

等等

现在您可以像这样在 ImageView 中设置边距:

android:layout_marginRight/Left="@dimen/margin"

不要忘记将您的 ImageView 设置为

android:gravity="center"

如果您的布局仅包含此 ImageView,那么您可以省略边距并将重力设置为中心。

于 2012-12-18T19:24:23.490 回答
0

如果所有外部空间都只是像您所说的那样是黑色背景,那么为什么不只使用一个以 ImageView 为中心的 RelativeLayout ,并在所有设备上保持相同的 layout_width 和 layout_height 。将 RelativeLayout 设置为黑色背景。这种方式会表现得更好,而且真的,如果你想要的只是图像周围的黑色边框,你不需要担心在其他地方有实际的布局。只要您设置固定的宽度和高度并将其居中,它就应该按照您的意愿执行。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:src="@drawable/apache" />
</RelativeLayout>

像那样。或者,如果您想非常具体,我想使用“100px”..尽管不建议这样做。

于 2012-12-18T19:35:13.963 回答