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:離某元素上邊緣的距離