Debug:更换系统ActionBarStyle无法更换startActionMode的actionBar风格

本文详细介绍了如何使用XML在Android中定义ListView布局,包括基本的LinearLayout和自定义ListView显示方式,同时展示了如何通过SimpleAdapter将数据绑定到ListView上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <LinearLayout
        android:id="@+id/listLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <!-- 我们会自己定义listview的显示方式(在另外一个布局文件里边)不用默认的方式 如果自定义listview的显示方式这里这个 
  		android:id="@id/android:list" 必须这样写-->

        <ListView
            android:id="@+id/list1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:drawSelectorOnTop="false"
            android:scrollbars="vertical" />
        <!-- android:drawSelectOnTop="false"此属性用来设置listview上的背景颜色会不会挡住(覆盖)内容
  				如果这是为false就表示不会覆盖掉 ,这个大家拿例子测试一下效果就明白了 -->
    </LinearLayout>

</LinearLayout>

res/menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

MainActivity.java

package com.example.hellolistviewmode;

import java.util.ArrayList;
import java.util.HashMap;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.ActionMode.Callback;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends Activity {
	protected static final String TAG = "ListViewMode";
	private Button mButton;
	private ListView mListView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mListView = (ListView) this.findViewById(R.id.list1);
		mButton = (Button) this.findViewById(R.id.button1);

		ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
		HashMap<String, String> map1 = new HashMap<String, String>();
		HashMap<String, String> map2 = new HashMap<String, String>();
		HashMap<String, String> map3 = new HashMap<String, String>();
		// 一个map对象对应一条数据
		map1.put("user_name", "zhangsan");
		map1.put("user_ip", "192.168.0.1");

		map2.put("user_name", "lisi");
		map2.put("user_ip", "192.168.0.2");

		map3.put("user_name", "wangwu");
		map3.put("user_ip", "192.168.0.3");
		list.add(map1);
		list.add(map2);
		list.add(map3);
		SimpleAdapter listAdapter = new SimpleAdapter(this, list,
				R.layout.user, new String[] { "user_name", "user_ip" },
				new int[] { R.id.user_name, R.id.user_ip });
		mListView.setAdapter(listAdapter);
		mListView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View v, int position,
					long id) {
				Log.v(TAG, "onItemClick position = " + position);

			}

		});
		mListView.setOnItemLongClickListener(new OnItemLongClickListener() {

			@Override
			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				Log.v(TAG, "onItemLongClick - position = " + arg2);
				mListView.startActionMode(mCallback);
				return false;
			}
		});

		mButton.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				mButton.startActionMode(mCallback);
			}
		});
	}

	private Callback mCallback = new ActionMode.Callback() {

		@Override
		public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
			// TODO Auto-generated method stub
			return false;
		}

		@Override
		public void onDestroyActionMode(ActionMode mode) {
			// TODO Auto-generated method stub

		}

		@Override
		public boolean onCreateActionMode(ActionMode mode, Menu menu) {
			MenuInflater inflater = getMenuInflater();
			inflater.inflate(R.menu.main, menu);
			 
			TextView mActionBarView = new TextView(MainActivity.this);
			mode.setCustomView(mActionBarView);
			mActionBarView.setText("I'm custom view");
			return true;
		}

		@Override
		public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
			// TODO Auto-generated method stub
			return false;
		}
	};
}


<?xml version="1.0" encoding="utf-8"?>
<!-- 此布局文件用来定义listview 的显示方式 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:paddingTop="1dip"
    android:paddingBottom="1dip"
    >
<TextView  
	android:id="@+id/user_name"
    android:layout_width="100dip" 
    android:layout_height="30dip"
    android:textSize="10pt"
    android:singleLine="true"/> 
<TextView 
	android:id="@+id/user_ip" 
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"	
	android:gravity="right"
	android:textSize="10pt"/> 
</LinearLayout>

res/values/style.xml

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="android:Theme.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="WindCustomTitleTextColor" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
		<item name = "android:textColor">@*android:color/white</item>
	</style>
	
	<style name="WindCustomActionbar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid">
		<item name = "android:background">#ffff0000</item>
		<item name = "android:titleTextStyle">@style/WindCustomTitleTextColor</item>
	</style>
	
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>

    <style name="TestAppTheme" parent="android:Theme.Holo.Light">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        <item name = "android:actionBarStyle">@style/WindCustomActionbar</item> 
<!--         <item name = "android:actionBarItemBackground">@drawable/ic_launcher</item> -->
        <item name = "android:actionModeBackground">@drawable/ic_launcher</item>
        
    </style>
    
    
</resources>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值