android50新控件
‘壹’ android开发 如何在相对布局中动态添加控件
首先setMargin方法不是RelativeLayout的方法,而是RelativeLayout.LayoutParams的方法。
你应该这麼用:
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new RelativeLayout.LayoutParams(-1, -1));
TextView mView = new TextView(this);
mView.setId(2);
mView.setText("this is a test text!");
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
-2, -2);
// layoutParams.setMargins(100, 100, 100, 100);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, -1);
layout.addView(mView, layoutParams);
上例是将一个TextView添加到RelativeLayout的底部。你可以把注释行取消掉,把下一行注释,再看下效果。
‘贰’ 最新的Android控件有哪些
1.MaterialStepperView
它是用Material Design实现Steppers的。
目前,Stepper只有垂直视图,但将来会有更多的风格。你可以尝试一下,如下图:
你可以自定义normal/active两个状态的颜色,完成图标,开启动画并设置动画时长。可通过Github上的设置项和样式查阅所有设置项。该库支持API 17+,详情请查阅wiki文档。
2. MultiSnapRecyclerView
这是分屏滚动的Android库。
MultiSnapRecyclerView为RecyclerView提供了分屏功能。
目前提供的功能有:
start, end和center三个位置的吸附,
snap count 指定要分屏的数量,
支持水平和垂直分屏,
滚动时的回调。
3. Garland View for Android
该库可实现如下的布局:
GarlandView 外部是一个水平滚动的视图,视图内的每一个子视图可垂直滚动。
你可以在README中找到其他重要信息。还有一个示例App。该库支持API 19及更高版本。
4. VegaLayoutManager
这是一个自定义的布局管理器——滚动时缩小并淡出头部。这是受到Dribble项目的启发。
5. ExpandableLayout
这个库的名字不言而喻,它是一个基于LinearLayout的可扩展的布局。
README里含有你启动时需要的所有信息,另外,还有一个示例App可以帮助你快速跳转到代码中。
6. SwipeBackLayout
SwipeBackLayout允许你使用手势返回上一个界面。
你可以设置滑动方向,如从左到右、从右到左、从顶部到底部、从底部到顶部。
你还可以设置是否只能从边缘滑动。
SwipeBackLayout只能包含一个子布局,例如:
LinearLayout,RelativeLayout,FrameLayout,TableLayout等。
ScrollView,HorizontalScrollView,NestedScrollView等。
RecyclerView,AbsListView(ListView)等子类。
ViewPager,WebView等。
该项目里面有一个详细说明的文档、示例APP和一个APK。
‘叁’ Android基础技术及基本控件
安卓基础技术主要是讲解一些安卓系统运行的原理,还有一些基本的组件,所有的安卓应用程序都是在这些组件构成的,基本控件主要就是一些类似按钮,进度条,滚动条这些图形界面组件,还有一些是用户自定义的组件。
‘肆’ android 控件移动方法
Android控件位置都是自己设置的。
如果要控件放到任意位置,建议用RelativeLayout(相对布局)
然后给控件添加属性,把控件放到想要的位置
下面是相对布局中 控件能用到的属性。
属性值为true可false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
属性值必须为id的引用名
android:layout_below 在某元素的下方
android:layout_above 在某元素的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素右边缘对齐
属性值为具体的像素值班,如30dp
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的的距离
android:layout_marginRight 离某元素的右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
‘伍’ android列表常用控件有哪些
一、概述 Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手写一个了。其实实现起来不算很难, 本文实现的方案是采用TextView +ImageView+PopupWindow的组合方案。 先来看看我们的自己写的控件效果图吧:(源码在文章下面最后给出哈!) 二、自定义下拉列表框控件的实现 1. 自定义控件用到的布局文件和资源: 结果框的布局页面:dropdownlist_view.xml: <?xml version="1.0" encoding="utf-8"?>
‘陆’ android界面开发常用的控件有哪些
控件开发大致分为两种: 1.组合式开发。将几个android现成的控件,如ImageView,Button等糅合在一起。 2.单独开发。一般继承View,然后重写其onDraw和onMeasure等方法。若是ViewGroup,则还需重写measureChildren等。 上面说的是2D控件。3D则需继承SurfaceView。
‘柒’ 请问:android如何动态添加控件,给控件添加“坐标”,“大小”等,求~~~~
在代码中可以动态的添加、移除控件;可以先获得一个layout的根标签layoutview,然后使用layoutview.addview(XXX),layoutview.removeview(XXX)之类的方法,动态添加、移除view,代码中也是可以控制布局的,找点资料看看就明白了,几句话也说不太明白。
‘捌’ Android中有没有比Spinner控件更好的选择
可以使用Button加ListPopupWindow实现和spinner一样的效果,并且可以监听到点击事件(Spinner是不能设置点击事件的)
布局文件,只有一个button
java"><?xmlversion="1.0"encoding="utf-8"?>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent">
<Button
android:id="@+id/button"
android:layout_width="100dp"
android:layout_height="50dp"
/>
</LinearLayout>
代码
{
privateButtonbutton;
;
privateList<String>strings;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
strings=newArrayList<String>();
strings.add("item1");
strings.add("item2");
strings.add("item3");
button=(Button)findViewById(R.id.button);
popupWindow=newListPopupWindow(this);
popupWindow.setAdapter(newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strings));
popupWindow.setAnchorView(button);
popupWindow.setWidth(LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(LayoutParams.WRAP_CONTENT);
popupWindow.setModal(true);
popupWindow.setOnItemClickListener(newOnItemClickListener(){
@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,
intposition,longid){
//TODOAuto-generatedmethodstub
button.setText(strings.get(position));
popupWindow.dismiss();
}
});
button.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
popupWindow.show();
}
});
}
}
运行效果
‘玖’ 求解:android中如何实现动态插入控件
直接给你上代码吧,写了我半个小时,经过了我的测试了的~
运行下就能看到结果了~关键的remove的时候有给你写注释~
布局的layout文件内容:
----------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/linearlayout">
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:layout_height="wrap_content" android:id="@+id/add"
android:text="Add" android:layout_width="100px"></Button>
<Button android:layout_height="wrap_content"
android:layout_width="100px" android:text="Remove" android:id="@+id/remove"></Button>
</LinearLayout>
<TextView android:id="@+id/TextView01" android:text="This is textView."
android:layout_width="fill_parent" android:gravity="center"
android:layout_height="50px"></TextView>
</LinearLayout>
----------------------------------------------------------------------------------
对应Activity的内容:
----------------------------------------------------------------------------------
package com.foxconn.dialog;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
public class DialogTest extends Activity implements OnClickListener {
private Button add_btn, remove_btn;
private LinearLayout linearLayout;
private int index = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViews();
register();
}
private void register() {
add_btn.setOnClickListener(this);
remove_btn.setOnClickListener(this);
}
private void findViews() {
add_btn = (Button) findViewById(R.id.add);
remove_btn = (Button) findViewById(R.id.remove);
linearLayout = (LinearLayout) findViewById(R.id.linearlayout);
}
protected View createView() {
Button btn = new Button(this);
btn.setId(index++);
btn.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btn.setText("aaaaaa" + index);
return btn;
}
private void removeView() {
//获取linearlayout子view的个数
int count = linearLayout.getChildCount();
//研究整个LAYOUT布局,第0位的是含add和remove两个button的layout
//第count-1个是那个文字被置中的textview
//因此,在remove的时候,只能操作的是0<location<count-1这个范围的
//在执行每次remove时,我们从count-2的位置即textview上面的那个控件开始删除~
if (count - 2 > 0) {
//count-2>0用来判断当前linearlayout子view数多于2个,即还有我们点add增加的button
linearLayout.removeViewAt(count - 2);
}
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.add:
linearLayout.addView(createView(), 1);
break;
case R.id.remove:
removeView();
break;
default:
break;
}
}
}
----------------------------------------------------------------------------------