![](/img/trans.png)
[英]Custom Listview + Xmlparser + Actionbar 4.2 Sherlock Searchview
[英]Custom Actionbar Sherlock PreferenceActivity ListView
我将SherlockPreferenceActivity用于来自xml文件的首选项活动。 代码如下:
public class Setting extends SherlockPreferenceActivity
{
protected void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
addPreferencesFromResource(R.xml.setting);
}
一切正常,但我需要左右空白为0dip(下图)
我曾尝试在ABS源代码中找到,但未能对其进行自定义。 有人做过吗?
更新:我上传了更多细节图片
setting.xml内容:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="@string/system_setting" >
<CheckBoxPreference
android:defaultValue="true"
android:key="mode_on_off"
android:summaryOff="Sub Setting 1"
android:summaryOn="Sub Setting 1 On"
android:title="Setting 1" />
<CheckBoxPreference
android:defaultValue="true"
android:key="filter_on_off"
android:summaryOff="Sub Setting 2"
android:summaryOn="Sub Setting 2 On"
android:title="Setting 2" />
<CheckBoxPreference
android:defaultValue="false"
android:key="screen"
android:summaryOff="Sub Setting 3"
android:summaryOn="Sub Setting 3 on"
android:title="Setting 2" />
</PreferenceCategory>
</PreferenceScreen>
我设法使其正常工作-不确定这是否是最好/最干净的解决方案,但它可以工作。
必须进行以下更改:
复制ActionBarActivity并让新类扩展PreferenceActivity
公共抽象类ActionBarPreferenceActivity扩展了PreferenceActivity {//内容与“ ActionBarActivity”完全相同)
略微修改ActionBarHelperBase.java中的onCreate()-为PreferenceActivity类添加特殊情况
@Override public void onCreate(Bundle savedInstanceState){//如果活动是PreferenceActivity,则不要发出以下请求:(!(mActivity instanceof PreferenceActivity)){mActivity.requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); }
在调用super.onCreate()之前,让您的PreferenceActivity扩展此类并添加对FEATURE_CUSTOM_TITLE的请求
公共类MyPreferenceActivity扩展了ActionBarPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // add this line
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
// etc etc
}
// etc etc
据我所知,需要进行更改2和3,因为对于PreferenceActivity:
“一旦调用super.onCreate(),就会建立ViewGroup,因此,您不能更改Window的参数。” (请参阅奥利弗对答案的评论)
我猜想PreferenceActivity活动中组件的创建顺序与普通Activity活动不同。
使用这种方式:
活动中:
import android.os.Bundle;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockPreferenceActivity;
public class MainActivity extends SherlockPreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.custom_infowindow);
final ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.custom_infowindow);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
addPreferencesFromResource(R.xml.test);
}
}
custom_infowindow.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Right Now Event"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#FF0000" />
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@color/_blue" />
</LinearLayout>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.