带有背景图像按钮的FlexboxLayout,如何保持其大小

时间:2017-07-18 19:23:42

标签: android android-layout button background

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?>

<com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@drawable/main_bg"
    android:orientation="vertical"
    app:alignContent="stretch"
    app:alignItems="stretch"
    app:flexWrap="wrap"
    android:id="@+id/activity_main"
    >


<com.google.android.flexbox.FlexboxLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:flexDirection="column"

    >

    <com.google.android.flexbox.FlexboxLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:flexDirection="row"
        app:layout_flexBasisPercent="25%"
        >
    <com.google.android.flexbox.FlexboxLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:flexDirection="column"
        app:layout_flexBasisPercent="50%"

        >

        <Button
            android:id="@+id/istilldontknow"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_dark"
            android:text="istilldontknow"
            android:textColor="@android:color/white"
            />

        <Button
            android:id="@+id/istilldontknow"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_light"
            android:text="@string/istilldontknow"
            android:textColor="@android:color/white"
            />
    </com.google.android.flexbox.FlexboxLayout>



     <Button
        android:id="@+id/istilldontknow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_orange_light"
        android:text="@string/istilldontknow"
        android:textColor="@android:color/white"
        app:layout_flexBasisPercent="50%"
         />

    </com.google.android.flexbox.FlexboxLayout>



<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="10"
    android:orientation="vertical"
    app:layout_flexGrow="1"
    >


    <Button
        android:id="@+id/events"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_blue_bright"
        android:text="@string/Event"
        android:textColor="@android:color/white"
        android:layout_weight="4"/>

    <Button
        android:id="@+id/checkin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_purple"
        android:text="@string/checkin"
        android:textColor="@android:color/white"
        android:layout_weight="4"/>


    <Button
        android:id="@+id/podcast"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="@android:color/holo_blue_dark"
        android:text="Play some Music"
        android:textColor="@android:color/white"
        android:layout_weight="2"

        />



</LinearLayout>

</com.google.android.flexbox.FlexboxLayout>

</com.google.android.flexbox.FlexboxLayout>

正如你所看到的,我得到了一张从互联网上拍摄的背景图片,此时没什么特别的

好,现在我想让我的主屏幕看起来像这样,我在上面的xml颜色方案中定义了给定的高度和宽度: Main Activity

正如你在PS文件中看到的那样,有一个带有文本设计的TextLayer,以及一个包含具有复杂背景的按钮背景的图层(注意使用Wave-Form中的“播放一些音乐”)背景加上按钮本身的各个元素。)

到目前为止一切顺利,我首先尝试了最简单的方法,将图像导出到-png,将其放入我的Drawables中,然后将我的“android:background =”设置为按钮。这是结果: Button with Background

正如你在这里看到的那样,图像不符合我想要的方式,而且文字的尺度也很差。

所以我尝试创建包含文本和背景图层的.9.png文件,但缩放看起来很糟糕,因为我只能在不包含任何文本或图案的某些区域中拉伸我的图像。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

只需用android:layout_height="wrap_content"替换所需按钮的android:layout_height="0dp"即可,结果如下所示。

图像:
 enter image description here

XML:

<?xml version="1.0" encoding="utf-8"?>
<com.google.android.flexbox.FlexboxLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:alignContent="stretch"
app:alignItems="stretch"
app:flexWrap="wrap">


<com.google.android.flexbox.FlexboxLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:flexDirection="column">

    <com.google.android.flexbox.FlexboxLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:alignItems="stretch"
        app:flexDirection="row"
        app:layout_flexBasisPercent="25%">

        <com.google.android.flexbox.FlexboxLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:flexDirection="column"
            app:flexWrap="nowrap"
            app:layout_flexBasisPercent="50%">

            <Button
                android:id="@+id/istilldontknow"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:background="@android:color/holo_green_dark"
                android:text="i still dont know"
                android:textColor="@android:color/white" />

            <Button
                android:id="@+id/istilldontknow1"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:background="@android:color/holo_green_light"
                android:text="i still dont know"
                android:textColor="@android:color/white" />
        </com.google.android.flexbox.FlexboxLayout>


        <Button
            android:id="@+id/istilldontknow11"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="@android:color/holo_orange_light"
            android:text="i still dont know"
            android:textColor="@android:color/white"
            app:layout_flexBasisPercent="50%" />

    </com.google.android.flexbox.FlexboxLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:weightSum="10"
        app:layout_flexGrow="1">


        <Button
            android:id="@+id/events"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:background="@drawable/nav_bg"
            android:text="EVENT"
            android:textColor="@android:color/white" />

        <Button
            android:id="@+id/checkin"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="4"
            android:background="@drawable/nav_bg"
            android:text="CHECK IN"
            android:textColor="@android:color/white" />


        <Button
            android:id="@+id/podcast"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:background="@drawable/nav_bg"
            android:scaleType="centerCrop"
            android:text="Play some Music"
            android:textColor="@android:color/white"

            />


    </LinearLayout>

</com.google.android.flexbox.FlexboxLayout>

</com.google.android.flexbox.FlexboxLayout>