您的位置:首页 > 移动开发 > Android开发

android 自定义含有滚动选择器的对话框

2016-04-12 14:00 691 查看
最近在写一个项目,需要用到滚动选择器,本人的想法是弹出一个对话框,中间包含滚动选择器,其中滚动选择器的源码参考的这篇文章/article/7618170.html

先来看一下效果



用滚动选择器选择分数,点击确定按钮,打分完成,点击取消按钮,对话框消失。

关于自定义滚动选择器大家可以参考上面那篇文章,我觉得写的很容易理解。本人主要把滚动选择器和对话框相结合。

下面我们来看代码

PickerView的代码完全来自于上面文章的博主,这里就不贴了。

对话框布局文件如下

activity_main.layout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:orientation="vertical"
android:padding="10.0dip">

<LinearLayout
android:id="@+id/customDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">

<TextView
android:layout_width="match_parent"
android:layout_height="40.0dip"
android:gravity="center"
android:textColor="#aa00aeef"
android:textSize="20sp"
android:text="开始打分"/>

<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<com.example.flt.myapplication.PickerView
android:id="@+id/picker"
android:layout_width="100dp"
android:layout_height="100dp"></com.example.flt.myapplication.PickerView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分"
android:layout_gravity="center_vertical"/>
</LinearLayout>

</LinearLayout>
</FrameLayout>


MainActivity的代码如下

package com.example.flt.myapplication;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends Activity implements View.OnClickListener {
private Button button;
public PickerView pickerView;
public String fenshu;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
button = (Button)this.findViewById(R.id.login);
button.setOnClickListener(this);

}

/**
* 点击登录按钮弹出对话框
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.login:
dialog();
Toast.makeText(this,"点击了",Toast.LENGTH_LONG).show();

}
}

//对话框
public void dialog(){
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
//初始化自定义布局参数
LayoutInflater layoutInflater = getLayoutInflater();
final View customLayout = layoutInflater.inflate(R.layout.activity_main, (ViewGroup)findViewById(R.id.customDialog));
//为对话框设置视图
builder.setView(customLayout);
pickerView = (PickerView)customLayout.findViewById(R.id.picker);
//定义滚动选择器的数据项
ArrayList<String> grade = new ArrayList<>();
for(int i=0;i<10;i++){
grade.add(i+"");
}
//为滚动选择器设置数据
pickerView.setData(grade);
pickerView.setOnSelectListener(new PickerView.onSelectListener() {
@Override
public void onSelect(String text) {
Log.i("tag","选择了"+text);
fenshu = text;
}
});

//对话框的确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("分数为=",fenshu.toString());

}
});
//对话框的取消按钮
builder.setNegativeButton("取消",null);
//显示对话框
builder.show();

}

}


好啦~很简单吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: