日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android自定义LinearLayout和View

發布時間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android自定义LinearLayout和View 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自定義線性布局經常用到:

第一種是在擴展的LinearLayout構造函數中使用Inflater加載一個布局,并從中提取出相關的UI組件進行封裝,形成一個獨立的控件。在使用該控件時,由于它所有的子元素都是在運行時通過代碼動態創建的,所以該控件只能以一個獨立控件的形式在Layout文件中聲明,例如:

public class CustomLayout extends LinearLayout{public CustomLayout(Context context){LayoutInflater mInflater = LayoutInflater.from(context);View myView = mInflater.inflate(R.layout.receive, null);addView(myView);} } < LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"androidundefinedrientation="vertical" ><LinearLayout android:layout_width="wrap_content"android:layout_height="wrap_content"androidundefinedrientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content" android:id="@+id/button" /></LinearLayout><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content" /> < /LinearLayout>
實例:

imagebtn.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><ImageViewandroid:id="@+id/imageView1"android:layout_width="46dp"android:layout_height="46dp"android:layout_gravity="center_vertical"android:layout_marginRight="10dp"android:src="@drawable/confirm" /><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:text="確定"android:textSize="25dp" /></LinearLayout> MyLinearLayout1.java

package com.hust.customlinearlayout;import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView;public class MyLinearLayout1 extends LinearLayout {private ImageView imageView;private TextView textView;public MyLinearLayout1(Context context){super(context);}public MyLinearLayout1(Context context, AttributeSet attrs) {super(context, attrs); LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);inflater.inflate(R.layout.imagebtn, this);imageView=(ImageView) findViewById(R.id.imageView1);textView=(TextView)findViewById(R.id.textView1); }public void setImageResource(int resId){imageView.setImageResource(resId);}public void setTextViewText(String text){textView.setText(text);} }
activity_main.xml

<?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:gravity="center_horizontal"android:orientation="horizontal" ><com.hust.customlinearlayout.MyLinearLayout1android:id="@+id/btn_right"android:layout_height="wrap_content" android:layout_width="wrap_content"android:layout_weight="1"/><com.hust.customlinearlayout.MyLinearLayout1android:id="@+id/btn_error"android:layout_marginLeft="5dp"android:layout_weight="1"android:layout_height="wrap_content" android:layout_width="wrap_content"/></LinearLayout> package com.hust.customlinearlayout;import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Toast;public class MainActivity extends ActionBarActivity {private MyLinearLayout1 myLinearLayout1;private MyLinearLayout1 myLinearLayout2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myLinearLayout1=(MyLinearLayout1) findViewById(R.id.btn_right);myLinearLayout2=(MyLinearLayout1) findViewById(R.id.btn_error);myLinearLayout1.setTextViewText("確定");myLinearLayout2.setTextViewText("取消");myLinearLayout1.setImageResource(R.drawable.confirm);myLinearLayout2.setImageResource(R.drawable.cancle);myLinearLayout1.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(), "點擊的正確按鈕", 1).show();}});myLinearLayout2.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(), "點擊的錯誤按鈕", 1).show();}});}}


第二種方式是:這個自定義VIEW中的任何控件都不是通過XML文件來定義的,而是在JAVA代碼中通過動態生成的,然后再addView()加入到你自定義的View中,

private class SpeechView extends LinearLayout { private TextView mTitle; private TextView mDialogue; public SpeechView(Context context, String title, String words) { super(context); this.setOrientation(VERTICAL); // Here we build the child views in code. They could also have // been specified in an XML file.mTitle = new TextView(context);mTitle.setText(title); addView(mTitle, new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));mDialogue = new TextView(context); mDialogue.setText(words); addView(mDialogue, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));} /** * Convenience method to set the title of a SpeechView*/ public void setTitle(String title) { mTitle.setText(title); } /*** Convenience method to set the dialogue of a SpeechView */ public void setDialogue(String words) {mDialogue.setText(words); } }

總結

以上是生活随笔為你收集整理的android自定义LinearLayout和View的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。