Android 簡單實現View自動換行(附源碼)

hi,
塵少又來了,
此次爲你們帶來的,
是View能夠自動換行的容器。android

相似於淘寶搜索時的推薦,
首先我不知道淘寶的是否只支持文字,
可是個人是任何View都支持的。
看下效果先:git

淘寶:
Bamboy自動換行——淘寶github

個人:
Bamboy自動換行ide

廢話很少少,
上代碼:
一、先把個人自定義控件放到你的項目裏
自定義控件佈局

二、Activity的XML佈局
若是裏邊放不少條目的話,
可能要套在ScrollView裏,
以防顯示不全spa

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.bamboy.autowordwrap.BamAutoLineList
        android:id="@+id/bal_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp" />
</ScrollView>

三、條目的XML
個人條目是圖片+文字的,
因此個人XML是這樣的:.net

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/btn_padding"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="10dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon" />

    <TextView
        android:id="@+id/tv_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="條目條目條目"
        android:textSize="14sp" />
</LinearLayout>

這裏有一點須要說聲抱歉,
由於這是自動換行控件,
因此個人設定是:code

條目的XML最外層的Layout,
寬高只能是wrap_content,
即便你設置成match_parent,
或者指定多少dp,
都是無效的。
連設置margin也都是無效。

若是你確實須要限制寬高,
那你能夠多套一層Layout,
在內層Layout設置便可。

四、Activity代碼xml

private Button btn_add;
private BamAutoLineList bal_list;

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

    btn_add = (Button) findViewById(R.id.btn_add);
    bal_list = (BamAutoLineList) findViewById(R.id.bal_list);

    // 點擊事件
    btn_add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // 實例化View
            View item = getLayoutInflater().inflate(R.layout.item, null);
            // 把View放到控件裏去
            bal_list.addView(item);
        }
    });
}

到此就結束了,
塵少一向的風格,
就是這麼簡單。事件

塵少老規矩,
附源碼:
http://download.csdn.net/down...

若是以爲塵少的Demo還不錯的話,
能夠克隆個人Git倉庫,
各類酷炫效果收入囊中:
https://github.com/Bamboy1203...
手機掃碼下載App一睹爲快:

相關文章
相關標籤/搜索