我正在尝试创建一个类似于pulse android app的自定义UI。据我了解,首先我必须先创建一个自定义按钮,如下图所示。
我的按钮上有图像和文字叠加。我知道这是一个基本问题,但我正面临这个问题,因为我是android开发的初学者。请帮我理解如何使用它。
答案 0 :(得分:3)
您可以使用黑色文字和一些透明度从ImageView
和TextView
组成一个简单的布局。两个视图都应放在RelativeLayout.
内。然后为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组件,这将涉及更多编码,但您将拥有一个独特的组件。
答案 1 :(得分:1)
如果它回答了你的问题,请接受答案。
现在关于网格集成的部分:将上面示例的XML内容(RelativeLayout + ImageView + TextView)保存到新的XML文件中,让它为layout/grid_item.xml
。
为id
和ImageView
TextView
然后在适配器的getView()
方法中扩充该布局并按ID查找ImageView和TextView,并设置适当的内容。
注意,这不是完整的源代码,但基本的Scheleton应如下所示:
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
}