Android的ListView的使用
可能我们在手机APP上使用的最多的视图就是列表了,那么Android列表(ListView)该怎么使用呢?
首先还是显示界面activity_main.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.lpf.test.MainActivity"> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentBottom="true" android:layout_alignParentStart="true" android:background="@color/bg" android:divider="@color/item_item" android:dividerHeight="10dp"/> </RelativeLayout>
|
之后是其对应的MainActivity.java文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public class MainActivity extends AppCompatActivity{ private ListView listview; private SimpleAdapter simp_Adapter; private List<Map<String,String>>datalist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = (ListView)findViewById(R.id.listview); datalist = new ArrayList<Map<String,String>>(); simp_Adapter = new SimpleAdapter(this,getData(),R.layout.item, new String[]{"title","text"},new int[]{R.id.title,R.id.text}); listview.setAdapter(simp_Adapter); } private List<Map<String,String>> getData(){ String[] data_text = getResources().getStringArray(R.array.text_arr); String[] data_title = getResources().getStringArray(R.array.title_arr); for(int i=0;i<data_text.length;i++){ Map<String,String>map = new HashMap<String,String>(); map.put("title",data_title[i]); map.put("text",data_text[i]); datalist.add(map); } return datalist; } }
|
其他文件保持不变即可。
至此,一个Android列表程序就实现了。
Android实现输入框回车输入
用惯了iOS的各位在开发安卓程序或者使用安卓手机时,都会遇到这样一个问题:原本在iOS上都是回车输入,而到了Android上却需要点击按钮完成输入(对比两个系统上的QQ就发现了)。我一直在使用iOS系统,因为《软设》才着手Android开发,所以我就想能不能像iOS上的那样实现一个输入框+回车符完成输入呢?经过我查找资料,发现确实可以:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <EditText android:id="@+id/edit_message" android:layout_margin="30dp" android:layout_width="match_parent" android:layout_height="80dp" android:hint="请输入文本信息 ..." android:imeOptions="actionSearch" android:singleLine="true"/> </LinearLayout>
|
在EditText中加入了imeOptions就可以将回车符转变成各种各样的功能:
- actionDone——回车符–>完成
- actionSend——回车符–>发送
- actionGo——回车符–>前进
- actionNext——回车符–>下一项
- actionNone——回车符–>无动作
- actionPrevious——回车符–>上一项
- actionSearch——回车符–>搜索
- actionUnspecified——回车符–>未指定
- actionSend——回车符–>发送
又查阅资料发现:ime是Input Method Editors的缩写,也就是输入法编辑器,原来如此,不过想使用这个属性,必须加上android:inputType
或者 android:singleline="true"
至此,就完成了Android回车符向iOS的转化!
Android页面跳转
前情提要
开发安卓单页面程序久了,必然会思考怎么开发像现在一般Android应用程序那样的多页面(指页面有跳转)程序,我也是在搜索了别人的博客之后,才总结出如下的这点精华步骤!
编写AndroidManifest.xml
首先,我们要确定我们需要怎样的跳转,既然跳转,无非就是自动跳转或者点击按钮,无论哪种,首先我们必须有两个界面(至少),所以在AndroidManifest.xml中,我们需要这样写:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="uno.meng.download"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ResultActivity" android:label="@string/comeback" android:parentActivityName=".MainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"/> </activity> </application> </manifest>
|
其中,每个对应一个界面,从代码中可见,我将后一个页面加了一个返回前一个页面的“返回符”。
编写跳转前界面search.xml
由于我在此将介绍怎么使用按钮跳转(带输入),所以直接在主界面search.xml(名称随意)中声明这两个组件(按钮,输入框):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <EditText android:id="@+id/edit_message" android:layout_margin="30dp" android:layout_width="match_parent" android:layout_height="80dp" android:hint="请输入文本信息 ..."/> <Button android:id="@+id/button" android:text="点击提交 " android:layout_margin="100dp" android:layout_width="127dp" android:layout_height="wrap_content" android:onClick="sendMessage" /> </LinearLayout>
|
我对按钮加了一个onClick事件。
编写对应的MainActivity.java
在search.xml对应的MainActivity.java文件中我们写好onCreate方法(每个文件都会有)以及sendMessage方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class MainActivity extends AppCompatActivity { public final static String EXTRA_MESSAGE = "uno.meng.download.MESSAGE"; public void sendMessage(){ EditText editText = (EditText)findViewById(R.id.edit_message); String message = editText.getText().toString(); Intent intent = new Intent(this, ResultActivity.class); intent.putExtra(EXTRA_MESSAGE,message); startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.search); } }
|
编写接收界面result.xml
然后到result.xml接收(我用的一个框来接收):
1 2 3 4 5 6 7 8 9 10 11 12
|
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <TextView android:layout_margin="30dp" android:layout_width="match_parent" android:layout_height="80dp"/> </LinearLayout>
|
编写接收对应的ResultActivity.java
编写对应的ResultActivity.java文件,
将从MainActivity.java接收来的文字打印到result.xml的框中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public class ResultActivity extends AppCompatActivity{ private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); System.out.println(message); TextView textview = new TextView(this); textview.setTextSize(100); textview.setText(message); setContentView(textview); } }
|
到此为止,已经完成了Android页面跳转!
自定义的view,action_view_auto_like.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageButton android:id="@+id/action_auto_like_button" android:layout_width="70dp" android:layout_height="30dp" android:scaleType="centerInside" android:background="@android:color/transparent" android:src="@drawable/btn_nav_autoliker">
</ImageButton> </FrameLayout>
|
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tinder="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_auto" android:actionLayout="@layout/action_view_auto_like" android:icon="@drawable/btn_nav_autoliker" android:orderInCategory="1" android:title="@string/action_auto_like" tinder:actionLayout="@layout/action_view_auto_like" tinder:showAsAction="always"/>
</menu>
|
在fragment 中配置
现在onCreateView
中加上setHasOptionsMenu(true);
,让系统在fragment中初始化menu。
1 2 3 4 5 6 7 8 9 10
|
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_tinder_like, menu); MenuItem searchItem = menu.findItem(R.id.action_auto); FrameLayout layout = (FrameLayout) MenuItemCompat .getActionView(searchItem); layout.findViewById(R.id.action_auto_like_button) .setOnClickListener(this); super.onCreateOptionsMenu(menu, inflater); }
|
然后在onClick
中加入你的逻辑。
The link of this page is https://blog.nooa.tech/articles/5d6c9819/ . Welcome to reproduce it!