摸魚學Android 十六(列表選項框+自動完成文本框)
標簽: android
摸魚學Android 十六(列表選項框+自動完成文本框)
UI控件之六
1 Spinner(列表選項框)
1.1 常用屬性
- dropDownHorizontalOffset:設置列表框的水平偏移距離
- dropDownVerticalOffset:設置列表框的水平豎直距離
- dropDownSelector:列表框被選中時的背景
- dropDownWidth:設置下拉列表框的寬度
- gravity:設置里面組件的對其方式
- popupBackground:設置列表框的背景
- prompt:設置對話框模式的列表框的提示信息(標題),只能夠引用string.xml 中的資源id,而不能直接寫字符串
- spinnerMode:列表框的模式,有兩個可選值: dialog:對話框風格的窗口 dropdown:下拉菜單風格的窗口(默認)
- entries:使用數組資源設置下拉列表框的列表項目
1.2 實例
復用上一節的代碼
- 新建布局spinner_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img_icon"
android:layout_width="64dp"
android:layout_height="64dp"
android:src="@drawable/logo" />
<TextView
android:id="@+id/txt_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/img_icon"
android:layout_marginTop="30dp"
android:text="文本"
android:textSize="18sp" />
</LinearLayout>
- activity_main.xml加入spinner
<Spinner
android:id="@+id/spin"
android:layout_width="200dp"
android:layout_height="64dp" />
- MainActivity.java
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private ArrayList<Icon> mData = null;
private BaseAdapter myAdadpter = null;
private Context mContext;
//判斷是否為剛進去時觸發onItemSelected的標志
private boolean selected = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
mData = new ArrayList<>();
bindViews();
}
private void bindViews() {
spinner = findViewById(R.id.spin);
mData.add(new Icon(R.drawable.chat,"聊天"));
mData.add(new Icon(R.drawable.game,"游戲"));
mData.add(new Icon(R.drawable.mike,"錄音"));
mData.add(new Icon(R.drawable.music,"音樂"));
mData.add(new Icon(R.drawable.printer,"打印機"));
mData.add(new Icon(R.drawable.location,"定位"));
mData.add(new Icon(R.drawable.torch,"手電筒"));
myAdadpter = new MyAdapter<Icon>(mData, R.layout.spinner_item) {
@Override
public void bindView(ViewHolder holder, Icon obj) {
holder.setImageResource(R.id.icon_img, obj.getiId());
holder.setText(R.id.icon_text, obj.getiName());
}
};
spinner.setAdapter(myAdadpter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
//重復選不提示
if(selected){
TextView txt_name = view.findViewById(R.id.icon_text);
Toast.makeText(mContext,"你選擇了:" + txt_name.getText().toString(),
Toast.LENGTH_SHORT).show();
}else {
selected = true;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
}
顯示:
2 AutoCompleteTextView(自動完成文本框)
2.1 常用屬性
- completionHint:設置下拉菜單中的提示標題
- completionHintView:定義提示視圖中顯示下拉菜單
- completionThreshold:指定用戶至少輸入多少個字符才會顯示提示
- dropDownAnchor:設置下拉菜單的定位"錨點"組件,如果沒有指定改屬性, 將使用該TextView作為定位"錨點"組件
- dropDownHeight:設置下拉菜單的高度
- dropDownWidth:設置下拉菜單的寬度
- dropDownHorizontalOffset:指定下拉菜單與文本之間的水平間距
- dropDownVerticalOffset:指定下拉菜單與文本之間的豎直間距
- dropDownSelector:設置下拉菜單點擊效果
- popupBackground:設置下拉菜單的背景
2.2 實例
- 加入布局
- values/arrays.xml定義字符串數組
<string-array name="myArray">
<item>who are you</item>
<item>where are you</item>
<item>when you go</item>
<item>what are you doing</item>
<item>how are you</item>
</string-array>
- MainActivity.java
public class MainActivity extends AppCompatActivity {
private AutoCompleteTextView atv_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
atv_content = (AutoCompleteTextView) findViewById(R.id.atv_content);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.
this, android.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.myArray));
atv_content.setAdapter(adapter);
}
}
- 輸入w,顯示4個文本,沒有how
3 MultiAutoCompleteTextView(多提示項的自動完成文本框)
3.1 基本屬性
與AutoCompleteTextView屬性相同
3.2 實例
復用AutoCompleteTextView的實例
- 修改activity_main.xml,AutoCompleteTextView改為MultiAutoCompleteTextView
<MultiAutoCompleteTextView
android:id="@+id/atv_content"
android:layout_width="match_parent"
android:layout_height="48dp"
android:completionHint="請輸入搜索內容"
android:completionThreshold="1"/>
- 修改MainActivity.java
public class MainActivity extends AppCompatActivity {
private MultiAutoCompleteTextView atv_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
atv_content = findViewById(R.id.atv_content);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.
this, android.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.myArray));
atv_content.setAdapter(adapter);
atv_content.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
}
- 逗號之后再輸入w,同樣會提示,AutoCompleteTextView不會
智能推薦
摸魚學Android 十五
摸魚學Android 十五 UI控件之五 GridView(網格視圖) 1 常用屬性 2 使用 3 實例 UI控件之五 GridView(網格視圖) 1 常用屬性 columnWidth:設置列的寬度 gravity:組件對其方式 horizontalSpacing:水平方向每個單元格的間距 verticalSpacing:垂直方向每個單元格的間距 numColumns:設置列數 stretchM...
區分自動完成文本框 AutoCompleteTextView和MultiAutoCompleteTextView
自動完成文本框(AutoCompleteTextView)從EditText派生而出,當用戶輸入一定字符之后,自動完成文本框會顯示一個下拉菜單,供用戶從中選擇,當用戶選擇某個才菜單項之后,AutoCompleteTextView按用戶選擇自動填寫該文本框 AutoCompleteTextView還派生了一個子類:MultiAutoCompleteTextView,該子類的功能與AutoComple...
Android文本框示例
在Android中,您可以使用“ EditText ”類創建一個可編輯的文本框,以接受用戶輸入。 本教程向您展示如何在XML文件中創建文本框,并演示如何使用鍵偵聽器來顯示在文本框中鍵入的消息。 PS此項目在Eclipse中開發,并通過Android 2.3.3進行了測試。 1. EditText 打開“ res / layout / main.xml &rdqu...
摸魚學Android 二十(菜單)
摸魚學Android 二十(菜單) UI控件之十 Menu(菜單) 1 OptionMenu(選項菜單) 1.1 說明 1.2 使用 1.3 實例 2 ContextMenu(上下文菜單) 2.1 說明 2.2 使用 2.3 實例 3 SubMenu(子菜單) 3.1 說明 3.2 使用 3.3 實例 4 PopupMenu(彈出式菜單) 4.1 說明 4.2 使用 4.3 實例 UI控件之十 M...
android文本框的各種用法
第一種自定義文本框的創建方法; 接下來就是添加到有我們的就是啊確定取消和普通按鈕的系統自帶的文本框: 接下來就是創建我們的單列和多列的文本框: 接下來就是我們的多選對話框: //接下來就是我們的啊自己的就是進度條對話框 //于此同時我們還可以就是改變我們的就是進度條的顯示樣式: 使用的是我們的setprogressStyle的屬性:...
猜你喜歡
Android學習筆記二十一之AutoCompleteTextView(自動提示文本框)和MutiAutoCompleteTextView(多提示項的自動提示文本框)
Android學習筆記二十一之AutoCompleteTextView(自動提示文本框)和MutiAutoCompleteTextView(多提示項的自動提示文本框) AutoCompleteTextView和MutiAutoCompleteTextView的用法和屬性基本一樣,所以就放在一起講了。這兩個控件都是用于給用戶更好的交互,輸入會自動提示。下面介紹一下基本的屬性: android:c...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...