布局:动态背景

时间:2013-05-12 16:34:33

标签: android android-layout background

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

enter image description here

一小时的宽度以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);

2 个答案:

答案 0 :(得分:1)

对于水平分离的白色区域

您可以使用<bitmap>通过android:tileMode="repeat"进行平铺(通过tiling the source drawable构建位图的一个示例)。

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

对于按钮

您可能希望使用9补丁来指定按钮的外观。您可以使用9个补丁使每个按钮都有一个薄的黑色边框。或者,您可以使用<shape> drawable。

答案 1 :(得分:0)

如果您为LinearLayout提供黑色背景色,则只需要输入

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

或每个RelativeLayout行中的一些此类金额,LinearLayout将显示在这些区域中,看起来就像我在示例中看到的那样。

或者,如果您希望每行上的一个项目不显示marginTopmarginBottom,就像左侧的那些彩色按钮一样,那么这些视图会比那些更高一些右边,使RelativeLayouts的重力垂直居中,你会看到短视图上方和下方的黑色。