`
yangshen998
  • 浏览: 1288997 次
文章分类
社区版块
存档分类
最新评论

android之组件1

 
阅读更多

UI组件

第一:TextView

(1)属性(只是今天学到的)

android:autoLink

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:autoLink="web"将文本中的URL换为超链接

android:text="@string/webUrl"/>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/email"

android:autoLink="email"/> 将文本中的email换为超链接 <TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/phoneNumber"

android:autoLink="phone"/> 将文本中的电话号码换为超链接 <TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/mapUrl"

android:autoLink="map"/> 将文本中的街道地址转换为超链接

注:他还有几个属性值,android:none 不设置任何超链接

android:all 相当于web/email/phone/map

这里只有在同时设置text时才自动识别链接,后来输入的无法自动识别。

效果如图:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.border_tv);

TextView tv = (TextView)findViewById(R.id.tvHtml);

String htmlStr = "<font size='30' color='#00FF22'>我</font>爱<b>你</b>"

+"<br><a href='http://hi.csdn.net/space.php?do=home'>lyhz</a>";

tv.setText(Html.fromHtml(htmlStr));

}

这也的效果是

注意:这也是一个超链接,不过只具外观,是不能够跳转的。

(2) 点边框的TextView

自定义边框

public void onDraw(Canvas canvas){

super.onDraw(canvas);

//创建画刷

Paint paint = new Paint();

//设置边框的颜色

paint.setColor(android.graphics.Color.GREEN);

//开始画

canvas.drawLine(0,0,this.getWidth()-1,0,paint);

canvas.drawLine(0, 0, 0,this.getHeight()-1,paint);

canvas.drawLine(this.getWidth()-1, 0,this.getWidth()-1, this.getHeight()-1, paint);

canvas.drawLine(0,this.getHeight()-1,this.getWidth()-1, this.getHeight()-1, paint);

}

效果如图:

第二:EditText

(1) 为EditText对象注册onKeyListener事件,实现onKey()方法

public class TestActivityextends Activity implements OnKeyListener{

Button btn = null;

EditText et = null;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.onkey);

findView();

btn.setOnClickListener(new OnClickListener() {

//为从编辑文本变成的按钮,写一个监听器,点击按钮变为编辑文本

public void onClick(View v) {

et.setVisibility(View.VISIBLE);

btn.setVisibility(View.GONE);

}

});

}

private void findView(){

btn = (Button)findViewById(R.id.button);

et = (EditText)findViewById(R.id.edit);

et.setOnKeyListener(this);

}

public boolean onKey(View v,int keyCode, KeyEvent event) {

//取键值

if(keyCode == KeyEvent.KEYCODE_ENTER){

btn.setText(et.getText());

et.setVisibility(View.GONE);

btn.setVisibility(View.VISIBLE);

}

return true;

}

(2) 自动完成输入内容的组件

AutoCompleteTextView

MultiCompleteTextView

public class AutoActivityextends Activity {

AutoCompleteTextView autoTx =null;

MultiAutoCompleteTextView mautoTx =null;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.auto);

findViews();

String[] str = { "abc", "add", "axy", "aaaa", "bcd", "bbbd", "bdcc" };

ArrayAdapter adapter = new ArrayAdapter(this,

android.R.layout.simple_dropdown_item_1line, str);

autoTx.setAdapter(adapter);

//-------MulitAutoCompleteTextView

mautoTx.setAdapter(adapter);

mautoTx.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

}

private void findViews() {

autoTx = (AutoCompleteTextView) findViewById(R.id.auto);

mautoTx = (MultiAutoCompleteTextView) findViewById(R.id.mauto);

}

效果如图:

Android ArrayAdapter 详解

本文主要讲解ArrayAdapter的创建方法,我把ArrayAdapter分为三种:简单的、样式丰富的但内容简单的、内容丰富的。

默认的,ArrayAdapter期望接受的样式文件里只含有一个textview,然后它把接受到的数据toString后(即调用数据对象的toString方法)展示在textview里。

一、简单的。

这样的列表的每一行都只有一行文字。

Java代码

  1. //当然listview也可以是在layout里写好,然后findViewById()获取出来,这样的话后面就不需setContentView(listview);
  2. ListViewlistview=newListView(this);
  3. ArrayAdapter<String>adapter=newArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1);
  4. adapter.add("string1");
  5. adapter.add("haha");
  6. adapter.add("heihei");
  7. listview.setAdapter(adapter);
  8. setContentView(listview);

上面代码中,android.R.layout.simple_expandable_list_item_1是android里已提供的样式,我们也可换成自己的xml。但是需要注意的是这个xml文件仅能有一个textview。连Layout也不能有。否则会报错:ArrayAdapter requires the resource ID to be a TextView

如layout下有online_user_list_item.xml,它的内容如下:

Xhtml代码

  1. <TextViewxmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="wrap_content"
  3. android:layout_height="wrap_content"
  4. android:id="@+id/online_user_list_item_textview">
  5. </TextView>

则android.R.layout.simple_expandable_list_item_1换成R.layout.online_user_list_item。

如果我们想要使用更复杂一点的layout,而不仅是只有一个textview,那就要用下面这种。

二、样式丰富但内容简单的。

layout下的online_user_list_item.xml内容如下:

Xhtml代码

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content">
  5. <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/online_user_list_item_textview"android:text="TextView"></TextView>
  6. <Button
  7. android:text="button"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content">
  10. </Button>
  11. </LinearLayout>

里面含有的textview是我们想要展示内容的地方。那么构建ArrayAdapter时,应该这样写:

Java代码

  1. ArrayAdapter<String>adapter=newArrayAdapter<String>(this,R.layout.online_user_list_item,R.id.online_user_list_item_textview);

如果我们需要展示的内容是一仅一个textview承载不了的,还需要其它组件,怎么办?我们可以自定义。

三、内容丰富的(自定义ArrayAdapter)。

这就需要写一个类继承自ArrayAdapter并且重写getView方法。上代码:

Java代码

  1. publicclassUserListAdapterextendsArrayAdapter<User>{
  2. privateintresourceId;
  3. publicUserListAdapter(Contextcontext,inttextViewResourceId,List<User>objects){
  4. super(context,textViewResourceId,objects);
  5. this.resourceId=textViewResourceId;
  6. }
  7. @Override
  8. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  9. Useruser=getItem(position);
  10. LinearLayoutuserListItem=newLinearLayout(getContext());
  11. Stringinflater=Context.LAYOUT_INFLATER_SERVICE;
  12. LayoutInflatervi=(LayoutInflater)getContext().getSystemService(inflater);
  13. vi.inflate(resourceId,userListItem,true);
  14. TextViewtvUsername=(TextView)userListItem.findViewById(R.id.tv_user_list_username);
  15. TextViewtvAskedNum=(TextView)userListItem.findViewById(R.id.tv_user_list_askednum);
  16. TextViewtvLastMsg=(TextView)userListItem.findViewById(R.id.tv_user_list_lastmsg);
  17. tvUsername.setText(user.getUsername());
  18. tvAskedNum.setText(String.valueOf(user.getAskedNum()));
  19. tvLastMsg.setText(user.getLastMsg());
  20. returnuserListItem;
  21. }
  22. }

activity里就这样写

Java代码

  1. List<User>users=newArrayList<User>();
  2. Useruser=newUser();
  3. user.setAskedNum(8);
  4. user.setLastMsg("hello");
  5. user.setUsername("pxx");
  6. users.add(user);
  7. users.add(user);
  8. users.add(user);
  9. UserListAdapteradapter=newUserListAdapter(this,R.layout.online_user_list_item,users);

listview.setAdapter(adapter);

分享到:
评论

相关推荐

    Android组件设计思想

    Android应用开发的哲学是把一切...这一节讲Android组件化设计的背景、理念、原则,以及Android在OS级别上提供的组件化支持,其中还会包含一个实验来验证这种组件化设计思想,可以对Android系统有一个高层次的抽象理解。

    Android项目之组件化

    1. **商品组件**:负责处理商品数据,如汽车配件的信息展示、搜索和分类。 2. **购物车组件**:实现添加、删除商品,以及结算功能。 3. **用户组件**:处理用户登录、注册、个人信息管理等功能。 4. **订单组件**:...

    Android四大组件简述

    Android系统的核心架构主要由四大组件构成:Activity、Service、BroadcastReceiver和ContentProvider。这四大组件是构建Android应用程序的基础,理解并熟练运用它们是每个Android开发者必须掌握的关键技能。 首先,...

    android安卓组件库

    android安卓组件库android安卓组件库android安卓组件库

    Android Axure组件库

    2. **Android组件**: Android Axure组件库中包含了大量的Android原生控件,如按钮、文本输入框、滑动条、选择器、下拉菜单、底部导航栏等。这些组件都遵循了Android Material Design指南,确保了设计的规范性和一致...

    Android 4.0 组件库 for Axure

    "Android 4.0 组件库 for Axure"正是为了满足这一需求而创建的资源,它包含了大量与Android 4.0 UI风格相符的预设组件,使得设计工作更加高效和精确。 首先,让我们深入了解一下Android 4.0的设计原则和UI元素。...

    android四大组件详解

    在Android系统中,四大组件是构建应用程序的核心元素,它们分别是Activity、Service、BroadcastReceiver和Content Provider。这四个组件各自承担着不同的职责,共同构成了Android应用的骨架。 **Activity**是用户与...

    android ui组件大全

    在Android应用开发中,UI(用户界面)组件是构建应用程序不可或缺的部分。这些组件构成了用户与应用交互的视觉元素。以下是对“android ui组件大全”这个主题的详细解析: 标题:“android ui组件大全” 这个标题...

    android各组件详解 PDF

    在Android开发中,各个组件是构建应用程序的基础模块,它们构成了Android应用的核心结构。这份"android各组件详解 PDF"文档详细阐述了这些组件的功能、用法以及如何协同工作,为开发者提供了深入理解Android应用架构...

    android自定义组件简单Demo

    1. **创建View类的子类**:在Android中,所有的UI元素都继承自`View`或`ViewGroup`。自定义组件通常需要创建一个新的Java类,继承自`View`或`ViewGroup`。在这个例子中,我们可能创建了一个名为`TestOurselfWidget`...

    基于ReactNative的android原生组件模块的工具箱

    这个工具箱专注于在Android平台上集成和管理原生组件,为ReactNative开发者提供了一个方便的解决方案,以便更好地利用Android系统的特性和功能。 标题“基于ReactNative的android原生组件模块的工具箱”暗示了该...

    Android UI控件组件库集合【源码】

    这个"Android UI控件组件库集合【源码】"提供了多种常用的UI控件及其源代码,旨在帮助开发者构建更加美观、功能丰富的应用界面。下面我们将详细探讨这些控件以及它们在实际开发中的应用。 1. **流式布局...

    Android组件化学习Demo

    总的来说,"Android组件化学习Demo"项目是一个很好的起点,通过实践这个项目,开发者可以深入了解Android组件化的理念,学习如何创建和管理模块,以及如何在实际项目中运用组件化来提升开发效率和代码质量。

    Android 左右侧滑组件

    1. 创建一个新的View类:这是自定义组件的第一步,我们需要继承自Android的基础View类,如View或者 ViewGroup,并重写其onDraw()方法,用于绘制组件的外观。如果需要处理触摸事件,还需要重写onTouchEvent()方法。 ...

    Axure Android-L组件库

    axure 的Android-L组件库,比较全

    Android自定义组件开发详解

    《Android自定义组件开发详解》一书的作者李赞红在序言中表达了对Android开发教学的热情和对学员成长的关切。他提到,尽管市场上有许多Android开发相关的书籍,但大多数要么偏重理论、要么实践指导不足,或者只是...

    Android组件化大牛视频

    1. **定义**:Android组件化是指将一个完整的应用程序分解成多个独立的功能模块(即组件),每个组件都可以独立开发、编译、运行甚至发布。这种方式极大地提高了开发效率和代码的复用性。 2. **优点**: - **提高...

    android组件化demo

    1. **组件(Component)**:在Android组件化中,组件是具有特定功能的独立单元,如Activity、Service、BroadcastReceiver等。 2. **模块(Module)**:一组相关的组件构成一个模块,每个模块有明确的职责和边界。 3....

    android组件化Demo

    "android组件化Demo"是针对这一技术的一个实例项目,旨在帮助开发者理解和实践Android组件化。在这个项目中,开发者使用了Arouter作为不同组件之间的通讯工具。 首先,我们要理解什么是组件化。在Android应用开发中...

Global site tag (gtag.js) - Google Analytics