经常用UC,它的dialog就是定制的。对它进行了模仿。
对这个dialog,我用gridview来实现的,所以另外启动了一个activity。
也可以继承dialog,那样的话,界面好像要在布局文件中写死?
主界面的布局:
<?xml version="1.0" encoding="utf-8"?>
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center_vertical|center_horizontal"
android:horizontalSpacing="5dp"
android:verticalSpacing="20dp"
android:id="@+id/gridview"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:columnWidth="80dp"
android:padding="5dp"
android:listSelector="@drawable/grid_item_selector"
>
</GridView>
每一项的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:scaleType="center"
android:layout_gravity="center_horizontal"
android:id="@+id/dialog_image"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ialog_text"
android:singleLine="true"
/>
</LinearLayout>
再就是这个activity的代码了。
public class DialogActivity extends Activity {
List<HashMap<String, Object>> datas = null;
String[] dialog_text = {
"新建窗口","加入书签","页面属性","自由赋值","分享页面"
};
int[] dialog_img = {
android.R.drawable.ic_dialog_info,
android.R.drawable.ic_dialog_email,
android.R.drawable.ic_dialog_info,
android.R.drawable.ic_dialog_map,
android.R.drawable.ic_dialog_alert,
};
View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
initResources();
SimpleAdapter adapter = new SimpleAdapter(this, datas, R.layout.dialog_item,
new String[]{"text","image"},
new int[]{R.id.ialog_text, R.id.dialog_image});
GridView grid = (GridView) findViewById(R.id.gridview);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(DialogActivity.this, "" + position, 1000).show();
}
});
}
private void initResources() {
datas = new ArrayList<HashMap<String,Object>>();
for(int i=0; i<dialog_text.length; i++) {
HashMap<String,Object> map = new HashMap<String, Object>(dialog_text.length);
map.put("text", dialog_text[i]);
map.put("image", dialog_img[i]);
datas.add(map);
}
}
}
在清单文件上,对这个activity进行主题设置
android:theme="@style/Dialog_NoTitle_Translucte">
自定义主题
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Dialog_NoTitle_Translucte" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<!-- 透明
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
-->
<item name="android:backgroundDimEnabled">false</item><!--activity不变暗-->
</style>
</resources>