1

我正在创建与此类似的应用程序:

在此处输入图像描述

一小时的宽度以 dp 表示。如何创建这种划分(按边框或不同颜色)的背景?我虽然关于插入 ImageViews 但有更好的方法吗?目前我的布局:

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/horizontalScrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent">
    <LinearLayout android:id="@+id/tableLayout" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical">
        <RelativeLayout android:id="@+id/tableRowLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content"></RelativeLayout>
        <RelativeLayout android:id="@+id/tableRowLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content"></RelativeLayout>
    </LinearLayout>
</HorizontalScrollView>

我将元素插入到相对布局中。

感谢帮助。

解决方案

    HorizontalScrollView mainView = (HorizontalScrollView) findViewById(R.id.horizontalScrollView1);

    Point size = new Point();
    getWindowManager().getDefaultDisplay().getSize(size);

    int height = size.y;
    int width = dpToPixels(dpPerHour);

    Bitmap bmpBg = ((BitmapDrawable) getResources().getDrawable(R.drawable.schedule_bg)).getBitmap();
    Bitmap scaled = Bitmap.createScaledBitmap(bmpBg, width, height, true);
    BitmapDrawable viewBg = new BitmapDrawable(getResources(), scaled);
    viewBg.setTileModeX(TileMode.REPEAT);
    viewBg.setGravity(Gravity.LEFT);
    mainView.setBackground(viewBg);
4

2 回答 2

1

对于水平分隔的白色区域

您可以使用<bitmap>with tiling via (通过平铺源 drawableandroid:tileMode="repeat"构建的位图示例)。

您可以通过一些工作来平铺<shape>内部<bitmap>。但是,我怀疑在其中平铺可绘制的图像<bitmap>更容易。

对于按钮

您可能想研究使用 9-patches 来指定按钮的外观。您可以使用 9-patches 使每个按钮都有一个细黑色边框。或者,您可以使用<shape>可绘制对象。

于 2013-05-12T18:13:24.960 回答
0

如果你给你LinearLayout一个黑色的背景颜色,那么你只需要放

android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"

或在您的每一行中添加一些这样的数量RelativeLayout,并且LinearLayout将在这些区域中显示出来,并且看起来就像我在您的示例中看到的那样。

或者,如果您希望每一行上的一个项目不显示marginTopand marginBottom,就像左侧的那些彩色按钮一样,然后使这些视图比右侧的视图高一点,使RelativeLayouts重力垂直居中,并且您会在较短的视图上方和下方看到黑色。

于 2013-05-12T18:39:12.767 回答