Android 与首选屏幕布局不同的布局
我使用首选项屏幕进行设置 acticitie可以与@android:style/Theme.Dialog主题配合使用。 因此,一个对话框出现在我的主活动中心 它在ldpi、mdpi和hdpi上运行良好,但在xhdpi上不起作用。 切换首选项覆盖我的标题项!将创建一个边距=s 良好(ldpi、mdpi、hdpi): 坏(xhdpi): 如何删除此项? 谢谢你 XML:Android 与首选屏幕布局不同的布局,android,settings,preferencescreen,Android,Settings,Preferencescreen,我使用首选项屏幕进行设置 acticitie可以与@android:style/Theme.Dialog主题配合使用。 因此,一个对话框出现在我的主活动中心 它在ldpi、mdpi和hdpi上运行良好,但在xhdpi上不起作用。 切换首选项覆盖我的标题项!将创建一个边距=s 良好(ldpi、mdpi、hdpi): 坏(xhdpi): 如何删除此项? 谢谢你 XML: 代码: public class Settings extends PreferenceActivity implement
代码:
public class Settings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener{
protected Method mLoadHeaders = null;
protected Method mHasHeaders = null;
/**
* Checks to see if using new v11+ way of handling PrefsFragments.
* @return Returns false pre-v11, else checks to see if using headers.
*/
public boolean isNewV11Prefs() {
if (mHasHeaders!=null && mLoadHeaders!=null) {
try {
return (Boolean)mHasHeaders.invoke(this);
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
}
return false;
}
@Override
public void onCreate(Bundle aSavedState) {
//onBuildHeaders() will be called during super.onCreate()
try {
mLoadHeaders = getClass().getMethod("loadHeadersFromResource", int.class, List.class );
mHasHeaders = getClass().getMethod("hasHeaders");
} catch (NoSuchMethodException e) {
}
super.onCreate(aSavedState);
if (!isNewV11Prefs()) {
addPreferencesFromResource(R.xml.settings);
}
SharedPreferences sharedPref = getPreferenceScreen().getSharedPreferences();
ListPreference pref = (ListPreference) findPreference("speed_preferences");
switch (Integer.valueOf(sharedPref.getString("speed_preferences", "0"))) {
case Vitesse.KMH:
pref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + getResources().getString(R.string.settings_speed_kmh));
break;
case Vitesse.MS:
pref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + getResources().getString(R.string.settings_speed_ms));
break;
case Vitesse.MPH:
pref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + getResources().getString(R.string.settings_speed_mph));
break;
}
pref = (ListPreference) findPreference("mode_preferences");
if (sharedPref.getString("mode_preferences", Preferences.Mode.SIMPLE.toString()).equals(Preferences.Mode.SIMPLE.toString())) {
pref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + getResources().getString(R.string.settings_mode_single));
} else {
pref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + getResources().getString(R.string.settings_mode_burst));
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Preference pref;
if ((pref = findPreference(s)) instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (listPref.getKey().equals("speed_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + listPref.getEntry());
} else if (listPref.getKey().equals("mode_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + listPref.getEntry());
}
}
}
@Override
public void onBuildHeaders(List<Header> aTarget) {
try {
mLoadHeaders.invoke(this,new Object[]{R.xml.settings,aTarget});
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
}
static public class PrefsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener{
@Override
public void onCreate(Bundle aSavedState) {
super.onCreate(aSavedState);
addPreferencesFromResource(R.xml.settings);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Preference pref;
if ((pref = findPreference(s)) instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (listPref.getKey().equals("speed_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + listPref.getEntry());
} else if (listPref.getKey().equals("mode_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + listPref.getEntry());
}
}
}
}
公共类设置扩展首选项活动实现SharedReferences.OnSharedPreferenceChangeListener{
受保护的方法mLoadHeaders=null;
受保护的方法mhaheaders=null;
/**
*检查是否使用新的v11+方式处理预碎片。
*@return返回false pre-v11,否则检查是否使用头。
*/
公共布尔值isNewV11Prefs(){
if(mhaheaders!=null&&mLoadHeaders!=null){
试一试{
返回(布尔)mhaheaders.invoke(this);
}捕获(IllegalArgumentException e){
}捕获(非法访问例外e){
}捕获(调用TargetException e){
}
}
返回false;
}
@凌驾
创建时的公共void(Bundle aSavedState){
//onBuildHeaders()将在super.onCreate()期间调用
试一试{
mLoadHeaders=getClass().getMethod(“loadHeadersFromResource”,int.class,List.class);
mHasHeaders=getClass().getMethod(“hasHeaders”);
}捕获(无此方法例外){
}
super.onCreate(aSavedState);
如果(!isNewV11Prefs()){
addPreferencesFromResource(R.xml.settings);
}
SharedReferences SharedReferences=getPreferenceScreen().GetSharedReferences();
ListPreference pref=(ListPreference)findPreference(“速度_首选项”);
开关(Integer.valueOf(sharedPref.getString(“速度参数设置”、“0”)){
案例Vitesse.KMH:
pref.setSummary(getResources().getString(R.string.settings\u speed\u summary)+“:“+getResources().getString(R.string.settings\u speed\u kmh));
打破
case Vitesse.MS:
pref.setSummary(getResources().getString(R.string.settings\u speed\u summary)+“:“+getResources().getString(R.string.settings\u speed\u ms));
打破
case Vitesse.MPH:
pref.setSummary(getResources().getString(R.string.settings\u speed\u summary)+“:“+getResources().getString(R.string.settings\u speed\u mph));
打破
}
pref=(ListPreference)findPreference(“模式_首选项”);
if(sharedPref.getString(“mode_preferences”,preferences.mode.SIMPLE.toString()).equals(preferences.mode.SIMPLE.toString())){
pref.setSummary(getResources().getString(R.string.settings\u mode\u summary)+“:“+getResources().getString(R.string.settings\u mode\u single));
}否则{
pref.setSummary(getResources().getString(R.string.settings\u mode\u summary)+“:“+getResources().getString(R.string.settings\u mode\u burst));
}
}
@凌驾
恢复时公开作废(){
super.onResume();
getPreferenceScreen().GetSharedReferences().RegisterOnSharedReferenceChangeListener(此);
}
@凌驾
公共无效暂停(){
super.onPause();
getPreferenceScreen().GetSharedReferences().unregisterOnSharedPreferenceChangeListener(此);
}
@凌驾
已更改共享首选项上的公共void(SharedReferences SharedReferences,字符串s){
偏好优先;
if((pref=findPreference)ListPreference的实例){
ListPreference listPref=(ListPreference)pref;
if(listPref.getKey().equals(“速度首选项”)){
listPref.setSummary(getResources().getString(R.string.settings\u speed\u summary)+“:“+listPref.getEntry());
}else if(listPref.getKey().equals(“模式_首选项”)){
listPref.setSummary(getResources().getString(R.string.settings_mode_summary)+“:“+listPref.getEntry());
}
}
}
@凌驾
public void onBuildHeaders(列出目标){
试一试{
调用(这个,新对象[]{R.xml.settings,atatarget});
}捕获(IllegalArgumentException e){
}捕获(非法访问例外e){
}捕获(调用TargetException e){
}
}
静态公共类PrefsFragment扩展PreferenceFragment实现SharedReferences.OnSharedPreferenceChangeListener{
@凌驾
创建时的公共void(Bundle aSavedState){
super.onCreate(aSavedState);
addPreferencesFromResource(R.xml.settings);
}
@凌驾
恢复时公开作废(){
super.onResume();
getPreferenceScreen().GetSharedReferences().RegisterOnSharedReferenceChangeListener(此);
}
@凌驾
公共无效暂停(){
super.onPause();
getPreferenceScreen().GetSharedReferences().unregisterOnSharedPreferenceChangeListener(此);
}
@凌驾
已更改共享首选项上的公共void(SharedReferences SharedReferences,字符串s){
偏好优先;
if((pref=findPreference)ListPreference的实例){
ListPreference listPref=(ListPreference)pref;
if(listPref.getKey().equals(“速度首选项”)){
listPref.setSummary(getResources().getString(R.string.settings\u speed\u summary)+“:“+listPref.getEntry());
}else if(listPref.getKey().equals(“模式_首选项”)){
listPref.setSummary(getResources().getString(R.string.settings_mode_summary)+“:“+listPref.getEntry());
}
}
}
}
}坦白说,没有人能想象你在这里或任何地方遇到的问题。我们需要查看代码。否则,对我们来说,您只是又一个糟糕的问题。\n我使用此代码作为首选项屏幕,请不要让人们打开4个选项卡来帮助您。把问题贴在上面,完整地说明你的问题。请阅读常见问题解答。我添加了代码!我的问题是在XHDPI上,设置的可视化效果与其他分辨率不一样。看,这两幅图像我已经被道氏逆转了
public class Settings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener{
protected Method mLoadHeaders = null;
protected Method mHasHeaders = null;
/**
* Checks to see if using new v11+ way of handling PrefsFragments.
* @return Returns false pre-v11, else checks to see if using headers.
*/
public boolean isNewV11Prefs() {
if (mHasHeaders!=null && mLoadHeaders!=null) {
try {
return (Boolean)mHasHeaders.invoke(this);
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
}
return false;
}
@Override
public void onCreate(Bundle aSavedState) {
//onBuildHeaders() will be called during super.onCreate()
try {
mLoadHeaders = getClass().getMethod("loadHeadersFromResource", int.class, List.class );
mHasHeaders = getClass().getMethod("hasHeaders");
} catch (NoSuchMethodException e) {
}
super.onCreate(aSavedState);
if (!isNewV11Prefs()) {
addPreferencesFromResource(R.xml.settings);
}
SharedPreferences sharedPref = getPreferenceScreen().getSharedPreferences();
ListPreference pref = (ListPreference) findPreference("speed_preferences");
switch (Integer.valueOf(sharedPref.getString("speed_preferences", "0"))) {
case Vitesse.KMH:
pref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + getResources().getString(R.string.settings_speed_kmh));
break;
case Vitesse.MS:
pref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + getResources().getString(R.string.settings_speed_ms));
break;
case Vitesse.MPH:
pref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + getResources().getString(R.string.settings_speed_mph));
break;
}
pref = (ListPreference) findPreference("mode_preferences");
if (sharedPref.getString("mode_preferences", Preferences.Mode.SIMPLE.toString()).equals(Preferences.Mode.SIMPLE.toString())) {
pref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + getResources().getString(R.string.settings_mode_single));
} else {
pref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + getResources().getString(R.string.settings_mode_burst));
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Preference pref;
if ((pref = findPreference(s)) instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (listPref.getKey().equals("speed_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + listPref.getEntry());
} else if (listPref.getKey().equals("mode_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + listPref.getEntry());
}
}
}
@Override
public void onBuildHeaders(List<Header> aTarget) {
try {
mLoadHeaders.invoke(this,new Object[]{R.xml.settings,aTarget});
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
}
static public class PrefsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener{
@Override
public void onCreate(Bundle aSavedState) {
super.onCreate(aSavedState);
addPreferencesFromResource(R.xml.settings);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
Preference pref;
if ((pref = findPreference(s)) instanceof ListPreference) {
ListPreference listPref = (ListPreference) pref;
if (listPref.getKey().equals("speed_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_speed_summary) + " : " + listPref.getEntry());
} else if (listPref.getKey().equals("mode_preferences")) {
listPref.setSummary(getResources().getString(R.string.settings_mode_summary) + " : " + listPref.getEntry());
}
}
}
}