androidlinearlayout
㈠ android中LinearLayout报错怎么办
自定义控件是 xml 布局文件中根元素(或父元素)使用了 android:clickable 属性,在设置 View.OnClickLinstener 时无法响应onClick 事件:
删除 android:clickable 属性,如果需要使用这个属性,在代码中设置:
this.setClickable(true);
再次监听 onClick 事件,正常。
其实不止是 LinearLayout,像在RelativeLayout中指定android:clickable 属性,同样会使 onClick 事件无法被监听。
㈡ android布局控件之LinearLayout详解
Android布局控件之LinearLayout详解
LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度)。LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐(相对一个控件的右对齐、中间对齐或者左对齐)。
xml属性
android:baselineAligned:是否允许用户调整它内容的基线。
android:baselineAlignedChildIndex:当一个线性布局与另一个布局是按基线对齐的一部分,它可以指定其内容的基线对齐方式。
android:gravity:指定如何在该对象中放置此对象的内容(x/y坐标值)。
android:orientation:设置它内容的对其方向(横向/竖向)。
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思。
android:layout_gravity 和 android:gravity 的区别
从名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。
android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置。
比如说button:android:layout_gravity 表示按钮在界面上的位置。 android:gravity表示button上的字在button上的位置。
可选值
这两个属性可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。
而且这些属性是可以多选的,用“|”分开。
默认这个的值是:Gravity.LEFT
LinearLayout还支持为其包含的widget或者是container指定填充权值。好处就是允许其包含的widget或者是container可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串widgets或者是containers挤成一堆的情况,而是允许他们放大填充空白。剩余的空间会按这些widgets或者是containers指定的权值比例分配屏幕。默认的 weight 值为0,表示按照widgets或者是containers实际大小来显示,若高于0的值,则将Container剩余可用空间分割,分割大小具体取决于每一个widget或者是container的layout_weight及该权值在所有widgets或者是containers中的比例。例如,如果有三个文本框,其中两个指定的权值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大,按实际大小来显示。如果前两个文本框的取值一个为2,一个为1,显示第三个文本框后剩余的空间的2/3给权值为2的,1/3大小给权值为1的。也就是权值越大,重要度越大。
如果LinearLayout包含子LinearLayout,子LinearLayout之间的权值越大的,重要度则越小。如果有LinearLayout A包含LinearLayout C,D,C的权值为2,D的权值为1,则屏幕的2/3空间分给权值为1的D,1/3分给权值为2的C。在LinearLayout嵌套的情况下,子LinearLayout必须要设置权值,否则默认的情况是未设置权值的子LinearLayout占据整个屏幕
㈢ Android LinearLayout view 置底
Button置底这个方法还算简单,直接将两个Button包裹于一个LinearLayout,然后设置这个LinearLayout的属性android:layout_alignParentBottom为true即可。
XML代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Button 置底 -->
<LinearLayout android:id="@+id/test_bottom_buttons"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_alignParentBottom="true">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="确定"></Button>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="取消"></Button>
</LinearLayout>
</RelativeLayout>
接下来就是要把剩余的空间用一个ListView进行填充了。
最开始bill臆断地认为,只要在包裹Buttons的LinearLayout代码上方加上一个ListView就OK了,这是我最开始错误的xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView android:id="@+id/lv_test" android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ListView>
<!-- Button 置底 -->
<LinearLayout android:id="@+id/test_bottom_buttons"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="horizontal" android:layout_alignParentBottom="true">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="确定"></Button>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="取消"></Button>
</LinearLayout>
</RelativeLayout>
㈣ android linearlayout 的属性怎么描述
FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。显示效果如下,第一个TextView被第二个TextView完全遮挡,第三个TextView遮挡了第二个TextView的部分位置。LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的宽度为多少;如果是水平排列,那么将是一个单行N列的结构。如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。LinearLayout中的子元素属性android:layout_weight生效,它用于描述该子元素在剩余空间中占有的大小比例。加入一行只有一个文本框,那么它的默认值就为0,如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为1和2,那么第一个文本框将占据剩余空间的三分之二,第二个文本框将占据剩余空间中的三分之一。android:layout_weight遵循数值越小,重要度越高的原则。
㈤ android LinearLayout怎么让它在窗口的底部
首先要固定底部即要相于整界面底部所外面布局要用RelativeLayoutinclude添加layoutwidthheight值再添加android:layout_alignParentBottom="true"行注意LinearLayout使用种相位置设置则效
㈥ android linearlayout布局怎么设置在顶端
1、如果是LinearLayout内容在顶端,可以添加android:layout_gravidy="top"属性,如下:
1
2
3
4
5
<LinearLayout
android:layout_gravidy="top"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
2、关于android:layout_gravidy和android:gravidy的区别,可以查看TeachCourse,希望可以帮助到!
㈦ android设置linearlayout布局的背景颜色,怎么动态改变背景颜色
1、开始打开Android IDE,这里以常用的Android Studio软件的3.2版本为例,然后可以新建一个工程项目,也可以使用当前已经存在的工程,点击后等待整个项目加载完毕再进行后续的操作。
㈧ Android如何自定义LinearLayout
LinearLayout自定义方法有多种:
1、自定义xml布局,然后加载布局,自定义一个View继承LinearLayout
2、在自定义控件中声明它的所有子元素,然后在Layout文件中像使用LinearLayout一样去进行布局。
第二种比较烦 ,它需要在Layout文件中定义好子元素之后,要在代码 onFinishInflate() 进行匹配子元素。
我就说说加载布局文件的方法吧。
首先:定义好layout文件
java"><?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingBottom="5dip"
android:paddingLeft="40dip"
android:paddingTop="5dip"
android:src="@drawable/right_icon"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dip"
android:text="主题"
android:textColor="#000000"/>
<LinearLayout
android:layout_width="100dp"
android:layout_height="fill_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingBottom="5dip"
android:paddingLeft="12dip"
android:paddingTop="5dip"
android:src="@drawable/home_icon"/>
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingBottom="5dip"
android:paddingLeft="12dip"
android:paddingTop="5dip"
android:src="@drawable/add_icon"/>
</LinearLayout>
</LinearLayout>
{
privateImageViewimageView,iv_home,iv_add;
privateTextViewtextView;
publicMyLinearLayout(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
publicMyLinearLayout(Contextcontext,AttributeSetattrs){
super(context,attrs);
//TODOAuto-generatedconstructorstub
LayoutInflaterinflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.actionbar,this);
imageView=(ImageView)findViewById(R.id.imageView1);
iv_home=(ImageView)findViewById(R.id.imageView2);
iv_add=(ImageView)findViewById(R.id.imageView3);
textView=(TextView)findViewById(R.id.textView1);
}
/**
*设置图片资源
*/
publicvoidsetImageResource(intresId){
imageView.setImageResource(resId);
}
/**
*设置显示的文字
*/
publicvoidsetTextViewText(Stringtext){
textView.setText(text);
}
}
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<cn.com.demo.view.MyLinearLayout
android:id="@+id/ll_actionbar"
android:layout_height="fill_parent<spanstyle="font-family:Tahoma,'MicrosoftYahei',Simsun;">"</span>
android:layout_width="wrap_content"
android:background="@drawable/bg"
/>
</LinearLayout>
接下来自定义一个MyLinearLayout继承LinearLayout,并且加载刚刚写好的layout文件。(比如http://www.tiecou.com)
{
privateImageViewimageView,iv_home,iv_add;
privateTextViewtextView;
publicMyLinearLayout(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
publicMyLinearLayout(Contextcontext,AttributeSetattrs){
super(context,attrs);
//TODOAuto-generatedconstructorstub
LayoutInflaterinflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.actionbar,this);
imageView=(ImageView)findViewById(R.id.imageView1);
iv_home=(ImageView)findViewById(R.id.imageView2);
iv_add=(ImageView)findViewById(R.id.imageView3);
textView=(TextView)findViewById(R.id.textView1);
}
/**
*设置图片资源
*/
publicvoidsetImageResource(intresId){
imageView.setImageResource(resId);
}
/**
*设置显示的文字
*/
publicvoidsetTextViewText(Stringtext){
textView.setText(text);
}
}
最后,要的时候使用定义好的MyLinearLayout控件。
㈨ Android布局文件LinearLayout报错!
LinearLayout报错一般是属性设置错误。该题的错误是违反了android布局文件跟节点的布局只能有一个,这里同时存在两个linearlayout。
解决方式:
把两个布局文件合成一个,把水平布局的LinearLayout嵌套到垂直布局的LinearLayout中。
修改如下:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
。。。一堆元素
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
。。。一堆元素
</LinearLayout>
</LinearLayout>
㈩ Android怎么让LinearLayout的两个按钮之间存在一些间隔
可以按照以下代码进行尝试:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
>
<Button
android:id="@+id/btnAction1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/cool_button"
android:text = "HiText1"
/>
<Button android:layout_marginTop="50dp"
android:id="@+id/btnAction2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/cool_button"
android:text="HiText2"
android:layout_below="@id/btnAction1"
/>
</LinearLayout>
(10)androidlinearlayout扩展阅读
若设置一个控件为android:graviity="center|top" 那么这个控件中的子控件位于该控件的中心位置靠上的部位。
若设置一个控件为android:layout_gravity="center|top" 那么这个控件位于他父控件的中心位置靠近上的部位,是对这个控件本身位置的操作。
android:layout_marginBottom:离某元素底边缘的距离
android:layout_marginLeft:离某元素左边缘的距离
android:layout_marginRight:离某元素右边缘的距离
android:layout_marginTop:离某元素上边缘的距离