0

我正在尝试创建一个类似于脉冲 android 应用程序的自定义 UI。据我了解,首先我必须先创建一个自定义按钮,如下图所示。

在此处输入图像描述

我的按钮上有一个图像和文本覆盖。我知道这是一个基本问题,但我正面临这个问题,因为我是 android 开发的初学者。请帮助我了解如何处理这个问题。

4

2 回答 2

3

您可以用黑色文本和一些透明度组成一个从 anImageView和 aTextView到底部对齐的简单布局。两个视图都应该放在 aRelativeLayout.然后你设置一个点击监听器RelativeLayout并在点击时采取适当的行动。

前任:

<RelativeLayout
    android:id="@+id/item"
    android:layout_width="150dp"
    android:layout_height="150dp" >

    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@drawable/my_test_image" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:background="#4000"
        android:text="Giorgio Armany Galaxy S"
        android:textColor="#FFF" />

</RelativeLayout>

然后在你的程序中:

RelativeLayout item=(RelativeLayout)findViewById(R.id.item);
    item.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // take action
        }
});

这是一种情况。另一种情况是,如果您愿意,可以扩展Button和组合您的自定义 UI 组件,这将涉及更多编码,但您将拥有一个独特的组件。

于 2012-08-02T11:52:07.647 回答
1

如果它回答了您的问题,请接受答案。

现在关于与网格集成的部分:将上面示例的 XML 内容(RelativeLayout + ImageView + TextView)保存到一个新的 XML 文件中,让它成为layout/grid_item.xml. 为and
添加一个唯一idImageViewTextView

然后在getView()你的适配器的方法中膨胀该布局并通过 id 找到 ImageView 和 TextView,并设置适当的内容。

请注意,这不是完整的源代码,但基本架构应如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
    ....
    convertView = mInflater.inflate(R.layout.grid_item, null);
    ....

    ImageView myImage=(ImageView)convertView.findViewById(R.id.my_image);
    TextView myTextView=(TextView)convertView.findViewById(R.id.my_textview);

    myImage.setImageResource(...);
    myTextView.setText(...);
    ...

    return convertView
}
于 2012-08-02T12:50:00.280 回答