linearlayout,LinearLayout设置圆角

http://www.itjxue.com  2023-01-21 06:36  来源:未知  点击次数: 

Android:如何让LinearLayout的background在整个屏幕中心显示

1、用其他组件代替linearlayout的方式进行,这样布局比较简单些。

如果用linearlayout的画,需要有5个才能居中,步骤如下

1、垂直放置3个linearlayout,中间一个固定高度,上下两个设置layout_weight="1"

2、中间linearlayout水平布局,放置左中右3个linearlayout,中间的设置固定宽度,左右设置layout_weight="1"

代码示例如下

linearlayout?

android:orientation="vertical"?

????linearlayout?android:orientation="vertical"?android:layout_weight="1"/

????linearlayout?android:orientation="horizontal"?

?????????android:layout_height="50dp"???????

?????????linearlayout?android:orientation="vertical"??android:layout_weight="1"/

?????????linearlayout?android:orientation="vertical"?android:layout_width="50dp"/

?????????linearlayout?android:orientation="vertical"??android:layout_weight="1"/

????/linearlayout

????linearlayout?android:orientation="vertical"??android:layout_weight="1"/

/linearlayout

如何在代码中设置LinearLayout的高度

在代码中设置LinearLayout的高度方法:

LinearLayout ll=(LinearLayout)this.findViewById(R.id.lineners); android.view.ViewGroup.LayoutParams lp =ll.getLayoutParams(); lp.height=100

Android如何自定义LinearLayout

LinearLayout自定义方法有多种:

1、自定义xml布局,然后加载布局,自定义一个View继承LinearLayout

2、在自定义控件中声明它的所有子元素,然后在Layout文件中像使用LinearLayout一样去进行布局。

第二种比较烦 ,它需要在Layout文件中定义好子元素之后,要在代码 onFinishInflate() 进行匹配子元素。

我就说说加载布局文件的方法吧。

首先:定义好layout文件

?xml?version="1.0"?encoding="utf-8"?

LinearLayout?xmlns: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

public?class?MyLinearLayout?extends?LinearLayout?{

private?ImageView?imageView,iv_home,iv_add;

private?TextView??textView;

public?MyLinearLayout?(Context?context)?{

super(context);

//?TODO?Auto-generated?constructor?stub

}

public?MyLinearLayout?(Context?context,?AttributeSet?attrs)?{

super(context,?attrs);

//?TODO?Auto-generated?constructor?stub

LayoutInflater?inflater=(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);

}

/**?

?????*?设置图片资源?

?????*/??

????public?void?setImageResource(int?resId)?{??

????????imageView.setImageResource(resId);??

????}??

??

????/**?

?????*?设置显示的文字?

?????*/??

????public?void?setTextViewText(String?text)?{??

????????textView.setText(text);??

????}??

}

?xml?version="1.0"?encoding="utf-8"?

LinearLayout?xmlns: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_parentspan?style="font-family:?Tahoma,?'Microsoft?Yahei',?Simsun;""??/span

????????android:layout_width="wrap_content"

????????android:background="@drawable/bg"??

????????/

/LinearLayout

接下来自定义一个MyLinearLayout继承LinearLayout,并且加载刚刚写好的layout文件。(比如)

public?class?MyLinearLayout?extends?LinearLayout?{

private?ImageView?imageView,iv_home,iv_add;

private?TextView??textView;

public?MyLinearLayout?(Context?context)?{

super(context);

//?TODO?Auto-generated?constructor?stub

}

public?MyLinearLayout?(Context?context,?AttributeSet?attrs)?{

super(context,?attrs);

//?TODO?Auto-generated?constructor?stub

LayoutInflater?inflater=(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);

}

/**?

?????*?设置图片资源?

?????*/??

????public?void?setImageResource(int?resId)?{??

????????imageView.setImageResource(resId);??

????}??

??

????/**?

?????*?设置显示的文字?

?????*/??

????public?void?setTextViewText(String?text)?{??

????????textView.setText(text);??

????}??

}

最后,要的时候使用定义好的MyLinearLayout控件。

android LinearLayout 里面的东西怎么换行?

由于前段时间项目中使用到了自动换行的线性布局,本来打算用表格布局在里面一个个的用Java代码添加ImageView的,但是添加的View控件是不确定的,因为得靠服务器的数据返回,就这样手动用Java代码画布局的方式就这样夭折了,因为在表哥布局中我无法确定一行显示多少个ImageView的数目,所以无法动态添加,最后自能自己去看看那种能够换行的线性布局了,线性布局比较不好的是不能自动换行,也就是当设置LinearLayout的orentation 设置为vertical 为竖直方向也就是只有一列,每行只能显示一个View或者View的子类,当设置LinearLayout的orentitation为Horizontal,LinearLayout的只能显示为一行,横向显示,当屏幕满了的时候,View控件并不会自动换行,所以我们要做的就是在LinearLayout满的时候自动换行。\x0d\x0a需要了解的是怎么样绘制根据子控件的长宽绘制父控件的宽度与高度,所以需要传入的参数控件的高度,视图分为两种一种是View类型的,代表控件有TextView,Button,EditText 等等,还有一种是装视图的容器控件继承自ViewGroup的控件,如LinearLayout,RelativeLayout,TabHost等等控件,需要自动换行的线性布局的话,就需要根据子控件的高度与宽度,来动态加载父控件的高度与宽度,所以需要在构造函数中传入每一个子控件的固定的高度,或者是动态设置子控件的高度与宽度。\x0d\x0a将自定义的LinearLayout 也继承自ViewGroup 并且重写抽象类ViewGrouop的几个方法:onMeasure(),onLayout(),dispathDraw() 三个方法的意思分别是:第一个onMeasure()是用来计算控件以及子控件所占用的区域,第二个onLayout()是控制子控件的换行,第三个可写可不写,主要是用来绘制控件的边框,\x0d\x0a自定义LinearLayout的代码如下:\x0d\x0a\x0d\x0a[java] view plaincopyprint?\x0d\x0apackage com.huanglong.mylinearlayout; \x0d\x0a \x0d\x0aimport android.content.Context; \x0d\x0aimport android.graphics.Canvas; \x0d\x0aimport android.graphics.Color; \x0d\x0aimport android.graphics.Paint; \x0d\x0aimport android.graphics.Rect; \x0d\x0aimport android.util.AttributeSet; \x0d\x0aimport android.view.View; \x0d\x0aimport android.view.ViewGroup; \x0d\x0a \x0d\x0a/** \x0d\x0a * @author huanglong 2013-5-28 自定义自动换行LinearLayout \x0d\x0a */ \x0d\x0apublic class FixGridLayout extends ViewGroup { \x0d\x0a private int mCellWidth; \x0d\x0a private int mCellHeight; \x0d\x0a \x0d\x0a public FixGridLayout(Context context) { \x0d\x0a super(context); \x0d\x0a } \x0d\x0a \x0d\x0a public FixGridLayout(Context context, AttributeSet attrs) { \x0d\x0a super(context, attrs); \x0d\x0a } \x0d\x0a \x0d\x0a public FixGridLayout(Context context, AttributeSet attrs, int defStyle) { \x0d\x0a super(context, attrs, defStyle); \x0d\x0a } \x0d\x0a \x0d\x0a public void setmCellWidth(int w) { \x0d\x0a mCellWidth = w; \x0d\x0a requestLayout(); \x0d\x0a } \x0d\x0a \x0d\x0a public void setmCellHeight(int h) { \x0d\x0a mCellHeight = h; \x0d\x0a requestLayout(); \x0d\x0a } \x0d\x0a \x0d\x0a /** \x0d\x0a * 控制子控件的换行 \x0d\x0a */ \x0d\x0a @Override \x0d\x0a protected void onLayout(boolean changed, int l, int t, int r, int b) { \x0d\x0a int cellWidth = mCellWidth; \x0d\x0a int cellHeight = mCellHeight; \x0d\x0a int columns = (r - l) / cellWidth; \x0d\x0a if (columns = (columns - 1)) { \x0d\x0a i = 0; \x0d\x0a x = 0; \x0d\x0a y += cellHeight; \x0d\x0a } else { \x0d\x0a i++; \x0d\x0a x += cellWidth; \x0d\x0a \x0d\x0a } \x0d\x0a } \x0d\x0a } \x0d\x0a \x0d\x0a /** \x0d\x0a * 计算控件及子控件所占区域 \x0d\x0a */ \x0d\x0a @Override \x0d\x0a protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { \x0d\x0a // 创建测量参数 \x0d\x0a int cellWidthSpec = MeasureSpec.makeMeasureSpec(mCellWidth, MeasureSpec.AT_MOST); \x0d\x0a int cellHeightSpec = MeasureSpec.makeMeasureSpec(mCellHeight, MeasureSpec.AT_MOST); \x0d\x0a // 记录ViewGroup中Child的总个数 \x0d\x0a int count = getChildCount(); \x0d\x0a // 设置子空间Child的宽高 \x0d\x0a for (int i = 0; i

回答于?2022-11-18

linearlayout怎么换行

LinearLayout换行:设置成垂直布局android:orientation="vertical"

如果有些要同一行,有些要换行,则把要换行的用LinearLayout括起来,设置成vertical

如:

1

2

3

4

5

6

7

8

LinearLayout

TextView///TextView和下面的LinearLayout是并排的

LinearLayout

android:orientation="vertical" //里面是TextView占一行,Button占一行

TextView/

Button/

/LinearLayout

/LinearLayout

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占据整个屏幕

(责任编辑:IT教学网)

更多