在按钮上设置文本按钮背景和文本背景不同

时间:2014-07-07 12:20:07

标签: android

我想在gridview中显示图像,底部写有文字。所以我拿了一个按钮并设置背景并设置壁纸。这给出了一个带有文本的图像,我可以在其上做任何工作。

我使用的代码是

Button
        android:id="@+id/img"
        android:layout_gravity="center"
        android:gravity="bottom|center"
        android:layout_width="100dp"
        android:paddingBottom="4dp"
        android:textSize="13dp"
        android:layout_height="100dp">
    </Button>

Button imageView = (Button) rowView.findViewById(R.id.img);
        imageView.setText(web[position]);

        imageView.setBackgroundResource(imageId[position]);

我得到的结果是第一张图片,但这里的问题是难以阅读某些图片上的文字

我希望文本以第二张图像上写的自己的背景书写。那么我该怎样做才能达到这个目的。你的建议对我有价值。亲切地建议,先谢谢

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:2)

对GridView项使用以下布局:

<RelativeLayout
    android:layout_width="100dp"
    android:layout_height="100dp">
    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <TextView
        android:id="@+id/caption"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#55000000"
        android:color="#ffffffff"/>
</RelativeLayout>

您不限于使用单个视图作为列表项。在Android上,通常使用复合布局作为列表项。

当前示例包括将图像本身与底部对齐的TextView重叠。请注意,对齐是在TextView本身上完成的;不是包含的文字。

答案 1 :(得分:1)

我建议你 1)取一个Linearlayout而不是按钮,然后设置Gravity = bottom | centerInHorizo​​ntal 2)采用Textview Inside Linearlayout将背景设置为文本视图并设置所需的文本 设置重力=中心

多数民众赞成......并获得LinearLayout Click事件......

答案 2 :(得分:0)

layout.xml

 <RelativeLayout
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop" />

        <LinearLayout
            android:id="@+id/linear_layout"
            android:layout_width="match_parent"
            android:background="@drawable/shadow"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">


            <TextView
                android:id="@+id/TextView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Name"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/TextView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="number"
                android:textAppearance="?android:attr/textAppearanceSmall" />

        </LinearLayout>

    </RelativeLayout>

并创建shadow.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <gradient
    android:angle="270"
    android:endColor="#33000000"
    android:centerColor="#11000000"
    android:startColor="#00000000" />
 </shape>

答案 3 :(得分:0)

试试这种方式,希望这可以帮助您解决问题。

<强> colors.xml

<resources>
    <color name="transparent_background">#CC4d4d4d</color>
</resources>

<强> grid_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <FrameLayout
        android:layout_width="100dp"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_launcher"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:gravity="center"
            android:padding="7dp"
            android:background="@color/transparent_background"
            android:text="Games"/>

    </FrameLayout>
</LinearLayout>