android怎样自定义dialog

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android怎样自定义dialog相关的知识,希望对你有一定的参考价值。

参考技术A   在android学习中大家对于android很多东西,都有了新的了解或者说真正的掌握,关于dialog实例大家一定会经常用到,但如何才能更好的设计使它符合自己的需求,本篇将会为大家讲述。
  第一个需求:简单的自定义dialog
  需求:创建一个dialog,该dialog具备以下功能:
  1.有一个窗口可以显示文章
  2.根据需求显示
  1)点击同意(不同意),触发对应的事件(同意的事件会弹出一个Toast,不同意则会关闭程序)
  2)点击关闭,关闭dialog
  1.在main.xml文件中设定一个按钮,点击会弹出dialog
  View Code
  <RelativeLayout 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" >
  <Button
  android:layout_width="100dp"
  android:layout_height="50dp"
  android:layout_centerHorizontal="true"
  android:layout_centerVertical="true"
  android:text="@string/hello_world"
  android:id="@+id/btn"
  android:background="@drawable/sl_btn_red" />
  </RelativeLayout>2.创建dialog的内容布局,布局中设定了使用相对布局设定了三个按钮,其中两个一起出现(同意和不同意),另外一个单独出现(关闭)默认是两个出现
  View Code
  private TextView btnClose = null;
  private TextView btnAgree = null;
  private TextView btnDisagree = null;
  private WebView mWebView = null;
  public MyDialog(Context context)
  super(context, R.style.item_tnc_dialog);
  setCancelable(false); // 阻止返回键的响应
  setContentView(R.layout.dialog_view);
  getWindow().setLayout(LayoutParams.MATCH_PARENT,
  LayoutParams.MATCH_PARENT);
  setUpView();
  
  private void setUpView()
  mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
  btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
  btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
  btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
  btnClose.setOnClickListener(new View.OnClickListener()
  public void onClick(View v)
  dismiss();
  
  );
  btnDisagree.setOnClickListener(new View.OnClickListener()
  @Override
  public void onClick(View v)
  dismiss();
  System.exit(0);
  
  );
  btnAgree.setOnClickListener(new View.OnClickListener()

  @Override
  public void onClick(View v)
  Toast.makeText(getContext(), "YOU SELECTED AGREE",
  Toast.LENGTH_SHORT).show();
  dismiss();
  

  
  );
  showDialog();
  
  /** 加载webview的内容 */
  public void showDialog()

  String localhtml = "file:///android_asset/los.html";

  if (mWebView != null)
  mWebView.getSettings().setDefaultTextEncodingName("utf-8");
  mWebView.loadUrl(localHtml);
  
  buttonsDisplayTwo(false);
  
  /** 当true的时候,出现同意和不同意两个选项,反之是关闭选项 */
  private void buttonsDisplayTwo(boolean two)
  btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
  btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
  btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
  3.main.activity的代码就不写了。。直接写自定义的dialog代码

  View Code
  private TextView btnClose = null;
  private TextView btnAgree = null;
  private TextView btnDisagree = null;

  private WebView mWebView = null;

  public MyDialog(Context context)
  super(context, R.style.item_tnc_dialog);

  setCancelable(false); // 阻止返回键的响应
  setContentView(R.layout.dialog_view);
  getWindow().setLayout(LayoutParams.MATCH_PARENT,
  LayoutParams.MATCH_PARENT);
  setUpView();

  
  private void setUpView()
  mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
  btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);

  btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
  btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);

  btnClose.setOnClickListener(new View.OnClickListener()

  public void onClick(View v)
  dismiss();
  
  );

  btnDisagree.setOnClickListener(new View.OnClickListener()

  @Override
  public void onClick(View v)
  dismiss();
  System.exit(0);
  
  );
  btnAgree.setOnClickListener(new View.OnClickListener()

  @Override
  public void onClick(View v)
  Toast.makeText(getContext(), "YOU SELECTED AGREE",
  Toast.LENGTH_SHORT).show();
  dismiss();
  
  );
  showDialog();
  

  /** 加载webview的内容 */
  public void showDialog()

  String localHtml = "file:///android_asset/los.html";

  if (mWebView != null)
  mWebView.getSettings().setDefaultTextEncodingName("utf-8");
  mWebView.loadUrl(localHtml);
  
  buttonsDisplayTwo(false);
  
  /** 当true的时候,出现同意和不同意两个选项,反之是关闭选项 */
  private void buttonsDisplayTwo(boolean two)
  btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
  btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
  btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
  本回答被提问者和网友采纳

如何自定义Android Dialog的样式?

参考技术A 如何自定义Android Dialog的样式? Android 中自定义Dialog的样式,主要是通过自定义的xml,然后载入到dialog的背景中,如下步骤:

1、自定义Dialog
final Dialog dialog = new Dialog(this, R.style.Theme_dialog);
2、窗口布局
View contentView = LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
3、把设定好的窗口布局放到dialog中
dialog.setContentView(contentView);
4、设定点选视窗空白处取消会话

dialog.setCanceledOnTouchOutside(true);
5、具体的操作
ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);
6、展示视窗
dialog.show();例:final Dialog dialog = new Dialog(this,R.style.Theme_dialog);View contentView =LayoutInflater.from(this).inflate(R.layout.select_list_dialog, null);dialog.setContentView(contentView);dialog.setCanceledOnTouchOutside(true);ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);TextView titleText = (TextView)contentView.findViewById(R.id.title);titleText.setText("请选择银行卡");SelectBankCardDialogAdapter adapter =new SelectBankCardDialogAdapter(this, mBankcardList);msgView.setAdapter(adapter);msgView.setOnItemClickListener(newOnItemClickListener() @Overridepublic void onItemClick(AdapterViewparent, View view, int position, long id) Toast.makeText(RechargeFlowToMobileActivity.this, position+"",0).show();mSelectCard =mBankcardList.get(position);String area = mSelectCard.getBank_card();mCardNumberText.setText(area);dialog.di *** iss(););Button closeBtn = (Button)contentView.findViewById(R.id.close);closeBtn.setClickable(true);closeBtn.setOnClickListener(newView.OnClickListener() @Overridepublic void onClick(View v) dialog.di *** iss(););dialog.show();
以上就是在Android开发自定义dialog样式的方法和步骤,android很多的控制元件都提供了介面或者方法进行样式的定义和修改。
如何自定义android Button样式
返回部落格列表
转 android自定义button样式
sumpower
释出时间: 2014/02/25 19:56
阅读: 4162

收藏: 0

点赞: 0

评论: 0
摘要
android自定义button样式
在Android开发应用中,预设的Button是由系统渲染和管理大小的。而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的。因此,我们在开发产品的时候,需要对预设按钮进行美化。在本篇里,笔者结合在应用开发中的经验,探讨一下自定义背景的按钮、自定义形状按钮的实现方法。
首先看实现效果截图:
自定义背景的按钮目前有2种方式实现,向量和点阵图。
1. 向量图形绘制的方式
向量图形绘制的方式实现简单,适合对于按钮形状和图案要求不高的场合。步骤如下:
(a) 使用xml定义一个圆角矩形,外围轮廓线实线、内填充渐变色,xml程式码如下。
view plain
bg_alibuybutton_default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="地址">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFEC7600" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
<item android:="1px" android:bottom="1px" android:left="1px" android:right="1px">
<shape>
<gradient
android:startColor="#FFEC7600" android:endColor="#FFFED69E"
android:type="linear" android:angle="90"
android:centerX="0.5" android:centerY="0.5" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
</layer-list>
同样定义bg_alibuybutton_pressed.xml和bg_alibuybutton_selected.xml,内容相同,就是渐变颜色不同,用于按钮按下后的背景变化效果。
(b) 定义按钮按下后的效果变化描述档案drawable/bg_alibuybutton.xml,程式码如下。
view plain
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="地址">
<item android:state_pressed="true"
android:drawable="@drawable/bg_alibuybutton_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/bg_alibuybutton_selected" />
<item android:drawable="@drawable/bg_alibuybutton_default" />
</selector>
(c) 在你需要的介面定义档案中,如layout/main.xml中定义一个Button控制元件。
view plain
<Button
android:layout_width="120dip"
android:layout_height="40dip"
android:text="向量背景按钮" android:background="@drawable/bg_alibuybutton" />
这样,自定义背景的按钮就可以使用了,在实现onClick方法后就可以响应操作。

android自带的样式比较难看,如何能够自定义按钮的样式,使其显示的跟美工设计的效果一样,现与大家分享下
在layout中新增2个按钮,从下图中可以看出在按钮中呼叫了style和android:background属性,这两个属性一个是自定义样式,一个是给按钮新增背景图片
展开res目录,可以看到在values目录下有styles.xml档案,该档案用于自定义样式,双击开启
标注的是我自定义的样式,name为BtnStyle,当按钮呼叫自定义样式的时候访问这个name
在button中呼叫自定义样式的方法,比较简单
如何往按钮中新增自定义图片,使按钮看起来更漂亮些,因不同手机解析度不同,那必然牵扯到图片的拉伸,在android系统下有个很好的技术“九宫格“,可以对图片进行处理,只对区域性进行拉伸,给工具目录储存在android\sdk\tools\draw9patch.bat,经过该工具处理的图片以.9.png结尾,放到drawable资料夹中
在Button中通过android:background属性载入图片的方法,至此我们自定义的按钮样式也就完成了,当然这只是个引子,在具体的专案工程中实现的效果要比这个demo复杂很多,有好的设计思路欢迎交流。

以上是关于android怎样自定义dialog的主要内容,如果未能解决你的问题,请参考以下文章

自定义Dialog对话框

自定义Dialog对话框

android Dialog怎样自定义属性?

android怎样自定义dialog

android怎样自定义dialog

如何自定义Android Dialog的样式?