MainActivity:
package com.example.qq;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private EditText editText = null;
private Button button = null;
private ArrayAdapter adapter = null;
private ListView listView = null;
private EditText editText2 = null;
private Button button2 = null;
private final int VIEW_TYPE = 0xb01;
private final int VIEW_TYPE_LEFT = -10;
private final int VIEW_TYPE_RIGHT = -11;
private ArrayList<HashMap<Integer, Object>> items = new ArrayList<HashMap<Integer, Object>>();
private final int MESSAGE = 0xb02;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
adapter = new MyAdapter(this, -1);
listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
editText = (EditText) findViewById(R.id.editText);
editText2 = (EditText) findViewById(R.id.editText2);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
sendMessage1();
}
});
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
sendMessage2();
}
});
}
private void sendMessage1() {
String msg = editText.getText() + "";
HashMap<Integer, Object> map = new HashMap<Integer, Object>();
map.put(VIEW_TYPE, VIEW_TYPE_RIGHT);
map.put(MESSAGE, msg);
items.add(map);
adapter.notifyDataSetChanged();
editText.setText(null);
listView.setSelection(ListView.FOCUS_DOWN);
}
private void sendMessage2() {
String msg = editText2.getText() + "";
HashMap<Integer, Object> map = new HashMap<Integer, Object>();
map.put(VIEW_TYPE, VIEW_TYPE_LEFT);
map.put(MESSAGE, msg);
items.add(map);
adapter.notifyDataSetChanged();
editText2.setText(null);
listView.setSelection(ListView.FOCUS_DOWN);
}
private class MyAdapter extends ArrayAdapter {
private LayoutInflater inflater = null;
public MyAdapter(Context context, int resource) {
super(context, resource);
inflater = LayoutInflater.from(context);
}
public View getView(final int pos, View convertView, ViewGroup parent) {
int type = getItemViewType(pos);
String msg = (String) getItem(pos);
switch (type) {
case VIEW_TYPE_LEFT:
if (convertView == null) {
convertView = inflater.inflate(R.layout.left, null);
}
TextView text2 = (TextView) convertView
.findViewById(R.id.textView2);
Button btn2 = (Button) convertView.findViewById(R.id.button2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delete(pos);
}
});
text2.setText(msg);
break;
case VIEW_TYPE_RIGHT:
if (convertView == null) {
convertView = inflater.inflate(R.layout.item, null);
}
TextView text1 = (TextView) convertView
.findViewById(R.id.textView1);
Button btn = (Button) convertView.findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delete(pos);
}
});
text1.setText(msg);
break;
default:
break;
}
return convertView;
}
public int getCount() {
return items.size();
}
public String getItem(int pos) {
String s = items.get(pos).get(MESSAGE) + "";
return s;
}
public int getItemViewType(int pos) {
int type = (Integer) items.get(pos).get(VIEW_TYPE);
return type;
}
public int getViewTypeCount() {
return 2;
}
public void delete(int pos) {
items.remove(pos);
adapter.notifyDataSetChanged();
}
}
}
布局:
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="100"
tools:context="com.example.qq.MainActivity" >
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="99">
</ListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="4">
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:layout_weight="1"/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/send"/>
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:layout_weight="1"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/send"/>
</LinearLayout>
</LinearLayout>
item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
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="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/a"
android:adjustViewBounds="true"
android:maxWidth="100sp"
android:maxHeight="100sp"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/textView1"
android:layout_toLeftOf="@id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textSize="15sp" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_toLeftOf="@id/textView1"
android:layout_centerVertical="true"
android:background="@drawable/btn_login_selecter"
/>
</RelativeLayout>
left.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
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="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:src="@drawable/a"
android:adjustViewBounds="true"
android:maxWidth="100sp"
android:maxHeight="100sp"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/textView2"
android:layout_toRightOf="@id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textSize="15sp" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_toRightOf="@id/textView2"
android:layout_centerVertical="true"
android:background="@drawable/btn_login_selecter"
/>
</RelativeLayout>
drawable文件中引用了Button的编辑
btn_login_selecter.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"> <!-- pressed the button status -->
<shape>
<!-- 开始颜色="" 结束颜色="" 颜色渐变="" -->
<gradient android:angle="270" android:endColor="#888888" android:startColor="#888888" />
<!-- //渐变方向 按钮边缘="" 边缘宽="" -->
<stroke android:width="1sp" android:color="#fad3cf" />
<!-- //边缘颜色 按钮四个圆角="" -->
<corners android:radius="30dp" />
<!-- //半径 内边距="" 按钮文字和边缘距离="" -->
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
<item android:state_focused="true"> <!-- get the focus button sttaus -->
<shape>
<gradient android:angle="270" android:endColor="#ffc2b7" android:startColor="#ffc2b7" />
<stroke android:width="1sp" android:color="#dcdcdc" />
<corners android:radius="30dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
<item> <!-- no focus the button status(the normal status button) -->
<shape>
<gradient android:angle="270" android:endColor="#00000000" android:startColor="#00000000" />
<stroke android:width="1sp" android:color="#fad3cf" />
<corners android:radius="30dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape></item>
</selector>
类似QQ的消息对话框
最新推荐文章于 2021-12-02 23:58:02 发布