导航:首页 > 操作系统 > android层级

android层级

发布时间:2022-04-18 05:42:36

android打造任意层级的树形控件那个id能不能用string

由于整体比较长,我决定首先带大家看一下用法,就是如果学完了这篇博客,我们需要树形控件,我们需要花多少精力去完成~~
现在需求来了:我现在需要展示一个文件管理系统的树形结构:
数据是这样的:

//id , pid , label , 其他属性
mDatas.add(new FileBean(1, 0, "文件管理系统"));
mDatas.add(new FileBean(2, 1, "游戏"));
mDatas.add(new FileBean(3, 1, "文档"));
mDatas.add(new FileBean(4, 1, "程序"));
mDatas.add(new FileBean(5, 2, "war3"));
mDatas.add(new FileBean(6, 2, "刀塔传奇"));

mDatas.add(new FileBean(7, 4, "面向对象"));
mDatas.add(new FileBean(8, 4, "非面向对象"));

mDatas.add(new FileBean(9, 7, "C++"));
mDatas.add(new FileBean(10, 7, "java"));
mDatas.add(new FileBean(11, 7, "Javascript"));
mDatas.add(new FileBean(12, 8, "C"));

当然了,bean可以有很多属性,我们提供你动态的设置树节点上的显示、以及不约束id, pid 的命名,你可以起任意丧心病狂的属性名称;

那么我们如何确定呢?
看下Bean:

package com.zhy.bean;

import com.zhy.tree.bean.TreeNodeId;
import com.zhy.tree.bean.TreeNodeLabel;
import com.zhy.tree.bean.TreeNodePid;

public class FileBean
{
@TreeNodeId
private int _id;
@TreeNodePid
private int parentId;
@TreeNodeLabel
private String name;
private long length;
private String desc;

public FileBean(int _id, int parentId, String name)
{
super();
this._id = _id;
this.parentId = parentId;
this.name = name;
}

}

现在,不用说,应该也知道我们通过注解来确定的。

下面看我们如何将这数据转化为树
布局文件就一个listview,就补贴了,直接看Activity

package com.zhy.tree_view;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

import com.zhy.bean.FileBean;
import com.zhy.tree.bean.TreeListViewAdapter;

public class MainActivity extends Activity
{
private List<FileBean> mDatas = new ArrayList<FileBean>();
private ListView mTree;
private TreeListViewAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

initDatas();
mTree = (ListView) findViewById(R.id.id_tree);
try
{

mAdapter = new SimpleTreeAdapter<FileBean>(mTree, this, mDatas, 10);
mTree.setAdapter(mAdapter);
} catch (IllegalAccessException e)
{
e.printStackTrace();
}

}

private void initDatas()
{

// id , pid , label , 其他属性
mDatas.add(new FileBean(1, 0, "文件管理系统"));
mDatas.add(new FileBean(2, 1, "游戏"));
mDatas.add(new FileBean(3, 1, "文档"));
mDatas.add(new FileBean(4, 1, "程序"));
mDatas.add(new FileBean(5, 2, "war3"));
mDatas.add(new FileBean(6, 2, "刀塔传奇"));

mDatas.add(new FileBean(7, 4, "面向对象"));
mDatas.add(new FileBean(8, 4, "非面向对象"));

mDatas.add(new FileBean(9, 7, "C++"));
mDatas.add(new FileBean(10, 7, "JAVA"));
mDatas.add(new FileBean(11, 7, "Javascript"));
mDatas.add(new FileBean(12, 8, "C"));

}

}

Activity里面并没有什么特殊的代码,拿到listview,传入mData,当中初始化了一个Adapter;

看来我们的核心代码都在我们的Adapter里面:
那么看一眼我们的Adapter

package com.zhy.tree_view;

import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.zhy.tree.bean.Node;
import com.zhy.tree.bean.TreeListViewAdapter;

public class SimpleTreeAdapter<T> extends TreeListViewAdapter<T>
{

public SimpleTreeAdapter(ListView mTree, Context context, List<T> datas,
int defaultExpandLevel) throws IllegalArgumentException,
IllegalAccessException
{
super(mTree, context, datas, defaultExpandLevel);
}

@Override
public View getConvertView(Node node , int position, View convertView, ViewGroup parent)
{

ViewHolder viewHolder = null;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.list_item, parent, false);
viewHolder = new ViewHolder();
viewHolder.icon = (ImageView) convertView
.findViewById(R.id.id_treenode_icon);
viewHolder.label = (TextView) convertView
.findViewById(R.id.id_treenode_label);
convertView.setTag(viewHolder);

} else
{
viewHolder = (ViewHolder) convertView.getTag();
}

if (node.getIcon() == -1)
{
viewHolder.icon.setVisibility(View.INVISIBLE);
} else
{
viewHolder.icon.setVisibility(View.VISIBLE);
viewHolder.icon.setImageResource(node.getIcon());
}
viewHolder.label.setText(node.getName());

return convertView;
}

private final class ViewHolder
{
ImageView icon;
TextView label;
}

}

我们的SimpleTreeAdapter继承了我们的TreeListViewAdapter ; 除此之外,代码上只需要复写getConvertView , 且getConvetView其实和我们平时的getView写法一致;

公布出getConvertView 的目的是,让用户自己去决定Item的展示效果。其他的代码,我已经打包成jar了,用的时候导入即可。这样就完成了我们的树形控件。
也就是说用我们的树形控件,只需要将传统继承BaseAdapter改为我们的TreeListViewAdapter ,然后去实现getConvertView 就好了。

⑵ 什么是Android界面组件(company)结构层次

摘要 Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。

⑶ Android系统分成哪4个层次:

对的 你理解的是对的啊,这是android开发的四个层次

⑷ android fragment和activity的区别

Fragment是到Android3.0+ 以后,Android新增了Fragments,在没有 Fragment 之前,一个屏幕只能放一个 Activity。这是一个起源时间大家要知道是什么时候开始引入的。
.Activity 代表了一个屏幕的主体,而Fragment可以作为Activity的一个组成元素。
一个Activity可以有若干个(0或n)Fragment构成。你可以把Fragment想象成Activity中的一个控件,只不过相对于一般控件,Fragment与Activity联系更为紧密,随着Activity的生命周期变化,Fragment也随之相应不同的生命周期函数。
Fragment 从功能上讲相当于一个子活动(Activity),它可以让多个活动放到同一个屏幕上,也就是对用户界面和功能的重用,因为对于大屏设备来说,纯粹的 Activity 有些力不从心。
Fragment 像是一个子活动,但是 Fragment 不是 Activity 的扩展,因为 Fragment 扩展自 android.app 中的 Object,而 Activity 是 Context 的子类。Fragment 有自己的视图层级结构,有自己的活动周期,还可以像活动一样响应后退按钮,Fragment 还有一个用作其初始化参数的包(Bundle),类似 Activity,Fragment 也可由系统自动保存并在以后还原。当系统还原 Fragment 时,它调用默认的构造函数(没有参数),然后将此Bundle还原到新创建的 Fragment 中,所以无论新建还是还原 Fragment,都要经过两个步骤:(1)调用默认构造函数(2)传入新的或者保存起来的Bundle。
一个Activity可以运行多个 Fragment,Fragment 切换时,由 FragmentTransaction 执行,切换时,上一个 Fragment 可以保存在后退栈中(Back Stack),这里的后退栈由 FragmentManager 来管理,注意 Fragment 和 Activity 的后退栈是有区别的:Activity 的后退栈由系统管理,而 Fragment 的后退栈由所在的Activity 管理。
Fragment不能脱离Activity而存在,只有Activity才能作为接收intent的载体。其实两者基本上是载体和组成元素的关系。
Fragment用来描述一些行为或一部分用户界面在一个Activity中,你可以合并多个fragment在一个单独的activity中建立多个UI面板,同时重用fragment在多个activity中.你可以认为fragment作为一个activity中的一节模块,fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响,举个例子吧,当activity暂停,那么所有在这个activity的fragments将被destroy释放。然而当一个activity在运行比如resume时,你可以单独的操控每个fragment,比如添加或删除。不过因为Fragment和Activity的生命周期都比较复杂,我们分别对比下:创建一个fragment你必须创建一个Fragment的子类或存在的子类,比如类似下面的代码
public static class AndroidFragment extends Fragment{
@Override
public View onCreateView(LayoutInflaterinflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.android_fragment,container, false);
}
}

Fragment类的一些代码看起来有些像Activity为了让大家了解清楚,Android开发网给大家整理下 Fragment的生命周期大家可以参考一下网上关于生命周期的介绍 http://www.cnblogs.com/purediy/p/3276545.html,部分类似Activity的,我们详细解释
onCreate()
当fragment创建时被调用,你应该初始化一些实用的组件,比如在fragment暂停或停止时需要恢复的
onCreateView()
当系统调用fragment在首次绘制用户界面时,如果画一个UI在你的fragment你必须返回一个View当然了你可以返回null代表这个fragment没有UI.
那么如何添加一个Fragment到Activity中呢? Activity的布局可以这样写
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.android.cwj.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment android:name="com.android.cwj.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>

⑸ 听说苹果比安卓快是因为响应层级不同。那请问安卓的响应层级顺序是什么

是的,楼主你说的没错。Android系统的优先级响应层级则是Application--Framework--Library--Kernal架构。相比起苹果第三道第三层才能到屏幕上反应,所以在流畅度上苹果确实胜过安卓

⑹ Android的权限都有哪些

(一)linux文件系统上的权限
-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk
代表的是相应的用户/用户组及其他人对此文件的访问权限,与此文件运行起来具有的权限完全不相关。
比如上面的例子只能说明system用户拥有对此文件的读写执行权限;system组的用户对此文件拥有读、执行权限;其他人对此文件只具有执行权限。
而test.apk运行起来后可以干哪些事情,跟这个就不相关了。
千万不要看apk文件系统上属于system/system用户及用户组,或者root/root用户及用户组,就认为apk具有system或root权限
(二)Android的权限规则
(1)Android中的apk必须签名
这种签名不是基于权威证书的,不会决定某个应用允不允许安装,而是一种自签名证书。
重要的是,android系统有的权限是基于签名的。比如:system等级的权限有专门对应的签名,签名不对,权限也就获取不到。
默认生成的APK文件是debug签名的。
获取system权限时用到的签名,见:如何使Android应用程序获取系统权限
(2)基于UserID的进程级别的安全机制
大家都知道,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。
Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为"app_"加一个数字,比如app_43
不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。
Android提供了如下的一种机制,可以使两个apk打破前面讲的这种壁垒。
在AndroidManifest.xml中利用sharedUserId属性给不同的package分配相同的userID,通过这样做,两个package可以被当做同一个程序,
系统会分配给两个程序相同的UserID。当然,基于安全考虑,两个package需要有相同的签名,否则没有验证也就没有意义了。
(这里补充一点:并不是说分配了同样的UserID,两程序就运行在同一进程, 下面为PS指令摘取的,
显然,system、app_2分别对应的两个进程的PID都不同,不知Android到底是怎样实现它的机制的)
User PID PPID
system 953 883 187340 55052 ffffffff afe0cbcc S system_server
app_2 1072 883 100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system 1083 883 111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2 1088 883 156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默认apk生成的数据对外是不可见的
实现方法是:Android会为程序存储的数据分配该程序的UserID。
借助于Linux严格的文件系统访问权限,便实现了apk之间不能相互访问似有数据的机制。
例:我的应用创建的一个文件,默认权限如下,可以看到只有UserID为app_21的程序才能读写该文件。
-rw------- app_21 app_21 87650 2000-01-01 09:48 test.txt
如何对外开放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 标记。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的显式权限声明
Android默认应用是没有任何权限去操作其他应用或系统相关特性的,应用在进行某些操作时都需要显式地去申请相应的权限。
一般以下动作时都需要申请相应的权限:
A particular permission may be enforced at a number of places ring your program's operation:
At the time of a call into the system, to prevent an application from executing certain functions.
When starting an activity, to prevent applications from launching activities of other applications.
Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
When accessing and operating on a content provider.
Binding or starting a service.
在应用安装的时候,package installer会检测该应用请求的权限,根据该应用的签名或者提示用户来分配相应的权限。
在程序运行期间是不检测权限的。如果安装时权限获取失败,那执行就会出错,不会提示用户权限不够。
大多数情况下,权限不足导致的失败会引发一个 SecurityException, 会在系统log(system log)中有相关记录。
(5)权限继承/UserID继承
当我们遇到apk权限不足时,我们有时会考虑写一个linux程序,然后由apk调用它去完成某个它没有权限完成的事情,很遗憾,这种方法是行不通的。
前面讲过,android权限是经营在进程层面的,也就是说一个apk应用启动的子进程的权限不可能超越其父进程的权限(即apk的权限),
即使单独运行某个应用有权限做某事,但如果它是由一个apk调用的,那权限就会被限制。
实际上,android是通过给子进程分配父进程的UserID实现这一机制的。
(三)常见权限不足问题分析
首先要知道,普通apk程序是运行在非root、非system层级的,也就是说看要访问的文件的权限时,看的是最后三位。
另外,通过system/app安装的apk的权限一般比直接安装或adb install安装的apk的权限要高一些。
言归正传,运行一个android应用程序过程中遇到权限不足,一般分为两种情况:
(1)Log中可明显看到权限不足的提示。
此种情况一般是AndroidManifest.xml中缺少相应的权限设置,好好查找一番权限列表,应该就可解决,是最易处理的情况。
有时权限都加上了,但还是报权限不足,是什么情况呢?
Android系统有一些API及权限是需要apk具有一定的等级才能运行的。
比如 SystemClock.setCurrentTimeMillis()修改系统时间,WRITE_SECURE_SETTINGS权限好像都是需要有system级的权限才行。
也就是说UserID是system.
(2)Log里没有报权限不足,而是一些其他Exception的提示,这也有可能是权限不足造成的。
比如:我们常会想读/写一个配置文件或其他一些不是自己创建的文件,常会报java.io.FileNotFoundException错误。
系统认为比较重要的文件一般权限设置的也会比较严格,特别是一些很重要的(配置)文件或目录。

-r--r----- bluetooth bluetooth 935 2010-07-09 20:21 dbus.conf
drwxrwx--x system system 2010-07-07 02:05 data
dbus.conf好像是蓝牙的配置文件,从权限上来看,根本就不可能改动,非bluetooth用户连读的权利都没有。
/data目录下存的是所有程序的私有数据,默认情况下android是不允许普通apk访问/data目录下内容的,通过data目录的权限设置可知,其他用户没有读的权限。
所以adb普通权限下在data目录下敲ls命令,会得到opendir failed, Permission denied的错误,通过代码file.listfiles()也无法获得data目录下的内容。

⑺ android如何动态改变控件的层级(叠放层次)

在左边图的基础上增加如右图控件b的控件c,然后控制控件c的显示与隐藏

⑻ android开发程序中 dialog与ProgressDialog 的层级问题

说的我根本不能理解。。。。。能发一下代码吗

⑼ 对比目前主流的三大移动平台android,ios,wp的区别和优缺点

iOS,Android,WindowsPhone是现在移动互联网上面主流的三个平台了,我也都分别参与过这三个平台的设计。在设计的过程中,因为这三个平台的不同特性,往往要角色切换,不断的换位思维。 可能新手和外行人觉得iOS和Android没什么区别,有的甚至拿Android直接照抄iOS设计就可以了。还有一些人可能对WindowsPhone平台一直觉得魔幻无比,但就是找不到应该如何下手。今天我总结了一下这三个平台之间交互设计上的差异性,在开展交互设计的过程中,必须要注意的问题: 一、布局形式的差异 iOS经典的“tab bar” 在iOS应用内如果要切换不同的模块,或者页面内要切换不同的栏目,往往都会用到“tab bar”这一形式的控件。这个经典设计从iOS早期沿用至今, 大部分iOS应用都是这样设计的。当然,ios本身是很包容的,最近也很流行抽屉式导航。但是tab bar一直是最受欢迎也最好被用户认知的方式: Android提供了2种视图控制方式 在Android4.0规范出来之后,Android提出了2种视图控制方式,一种是直接在导航栏的标题下加入一个触控按钮,点击后会弹出切换栏目的菜单 (图中2标注的位置) (比如日历应用点击后可以切换不同的视图) 另外一种是直接在导航栏的下面加入了一个视图控制栏,和iOS的tab bar很像,不过是仅放在了上面,而且提倡支持手势滑动切换: (图中2标注位置) WindowsPhone的创新 WindowsPhone与上面两个平台就差距很大了,因为WindowsPhone独特的MetroUI提倡回归传统的阅读体验,像浏览报纸和杂志一样浏览手机上的内容,更关注与内容而不是修饰。所以WindowsPhone整体都给人一种像在看杂志的感觉。 WindowsPhone的视图控制通过一种叫做“全景视图”的方式 实际上,4个视图的内容是在一个页面上的,而且是一个页面同时加载的。用户的手机默认只显示第一屏的内容,通过滑动把后面的内容拉出来~ 这种视图方式很创新,而且方便阅读,不得不说浏览的体验好了很多。但是需要注意的是: 1)因为其实这3个栏目是同一页面视图,所以不要将内容放的过多,否则加载会很慢影响效率; 2)对交互设计过程中的排版和视觉提出了很高的要求;(你得提前想好怎么布局好看了) 另外,WindowsPhone还提供了一种叫做枢轴的方式,枢轴和iOS的tab bar相差不是很大,只不过完全是通过滑动来切换栏目的: (枢轴布局) 二、导航逻辑的差异 大家都知道iOS是没有实体返回按键的,所有返回都是通过导航栏的back按钮来完成。 在iOS的导航逻辑中,我们可以明显的看出来,整个程序是一页一页的切换,就像一个幻灯片。而返回按钮也就是切换到上一页。所以,iOS的返回控制的是页面。 但是Android和WindowsPhone就不是这样了,Android和WindowsPhone是有物理返回按钮的,点击物理返回按钮,控制的不光是一个页面,而且包括了上一步的操作,比如说: 进入页面A,点击文本框弹出键盘。那么点击返回按键就是 - 收起键盘 所以安卓和WindowsPhone的返回逻辑是按照时间流来判断的,而不仅仅是页面,返回按钮控制的是动作。 需要特意提一下的是:WindowsPhone的返回逻辑不单限于应用内,还影响到应用之间。也就是说你当前正在桌面,再点击一次back,就会进入你上一次打开的应用。 另外在Android4.0中,提出了一个向上的概念,就是导航栏标题前面的一个小箭头,点击这个箭头,是回到该页面的上一个层级: 三、应用之间联系的差异 众所周知,iOS是一个封闭的系统,而Android是一个开放的系统。我们可以比喻iOS每一个应用都是一个小房间,每个应用都在自己的房间里做自己的事情,互相之间不进行任何来往。 而Android则是一个大大的办公区,每个应用虽然也有自己的工位,但是可以互相串门或者借用东西,而WindowsPhone则遵循着和iOS差不多的方式。到了iOS6的时候可以支持应用直接互相跳转了,但那也仅限于你跳出去了,就不再回来了,也就是说到了那个房间你就是那个房间的人了,与之前的房间没有关联了。 这样的差异意味着,iOS和WindowsPhone应用的权限变得很低,身为应用的你既不能修改系统的一些属性(除非越狱了),也不能修改其他应用的内容。而Android的一款应用不但可以控制系统的一些操作,还可以控制其他应用执行某些特定的操作。 这种差异会让安卓上的应用设计有了更多的可能,身为设计师的你可以根据这一特性设计很多不错的功能,比如系统美化或者系统优化,杀毒,拦截电话等功能,而iOS和WindowsPhone就不能。 但是这也让Android系统面临了很严峻的安全问题,所以安卓上各种优化和杀毒软件很流行。 四、多任务的差异 多任务的差异用一句话来形容就是:iOS和WindowsPhone都是假的多任务,而Android是真的多任务。 如果你设计的应用有下载,那么iOS和WindowsPhone切换到后台下载就被暂停了,而Android不但不会暂停,你还可以设计一些偷偷在后台运行的功能! 五、分辨率的差异 亲,你知道Android现在有多少种分辨率吗? 适配一直是Android很头痛的问题,身为前端往往要为不同的分辨率调效果而保证界面不会变形和模糊。而分辨率问题不仅仅影响视觉这一块,对交互设计也有很大的影响。因为这些手机往往屏幕比例也是不同的,你需要考虑不同的长宽比下,你的界面布局应该是怎样的。 所以在设计Android的时候,你不能要求把界面布局写死,应该尽量保证每个控件都是浮动的,而且自己能评估出各种古怪的布局下的效果。 iOS和WindowsPhone就会好很多。iOS分辨率分为320×480,640×960,640×1136,WindowsPhone分辨率分为480×800,800×1280,800×1136,虽然看起来也蛮多的,但是界面的比例基本上没有什么变化。所以对于交互上的布局影响并不是很大,视觉设计师也可以通过脚本缩小裁图简单的解决问题。 六,设计风格的差异 设计风格是这3个客户端自己独特的个性,设计风格不单影响的是视觉设计的层面,对交互设计也非常的重要。尤其是在考虑动效,拟物化交互的时候需要重视。 iOS的设计风格偏向拟物化风格,这个拟物化不光是视觉上做出很多拟物的小按钮小控件的,为了配合视觉,你往往在交互上也可以加一些生动有趣的内容。 比如说像最新的path,进入商店时遮阳板会有一个收起的效果,小卡片也会根据重力感应而摇摆。如果交互上就能体现出平台的设计风格的话,无疑会非常讨好用户,增加产品细节上的亮点。 Android平台就简单一些了,在整体的布局和交互形式和iOS差不多的情况下,尽量的简洁,呈现一种科幻的风格即可以了。Android平台尽量少用拟物化的动效,因为Android系统对于动画效果的渲染比较差,如果太复杂的话可能会让界面非常的卡。 本人强烈推荐一款叫fuubo的应用,它是一款非常符合Android Holo风格又在交互上处理的很有创新的产品。 WindowsPhone平台则有着很大的不同,MetroUI的理念要求设计者更多的考虑如何展现内容,使用平滑的过渡动画。而且还对设计者的排版和平面设计提出了一些考验。所以建议交互设计的人好好读读WindowsPhone界面设计准则,并且平时就积累一些WindowsPhone界面的视觉界面感觉,不然视觉设计师很可能会埋怨你哦!~

⑽ android 怎么计算一个view的嵌套层级

层级关系的布局有两种解决方法:

一种方法是使用标签的自然顺序和嵌套顺序来形成合理的布局。

而第一种方法却不是万能的,有时候我们需要将原本位于下层的元素移到另一个元素上方,那可以使用z-index;

而你说的不好用,则是zindex没有生效,没生效就是没有定义position属性,如果不想让元素的位置有所变化,就给赋予z-index属性的元素加上相对定位的position:relative;

阅读全文

与android层级相关的资料

热点内容
微信聊天界面源码 浏览:22
seo竞价推广点击价格算法公式 浏览:315
框架结构可以加密吗 浏览:218
python编译器怎么清除 浏览:73
linux全局socks代理 浏览:611
php微信抽奖 浏览:771
压缩算法嵌入式移植 浏览:531
php新手小例子 浏览:233
按照医生的算法一周是几天 浏览:805
三次b样条曲线算法 浏览:924
java7特性 浏览:555
爱山东app小学报名怎么知道报没报上 浏览:458
android获取wifi信号 浏览:133
娜拉美妆app怎么使用 浏览:760
有了源码要买服务器吗 浏览:365
app怎么查看自己的存款利息 浏览:515
碧蓝安卓与b站有什么区别 浏览:342
php静态块 浏览:719
ftpmget命令 浏览:475
源码时代怎样 浏览:415