标签: preference

Android偏好摘要.如何总结3行?

优先权摘要仅允许2行.如果我想在摘要中显示3行或更多行.我能怎么做 ?

android summary preference

10
推荐指数
2
解决办法
4498
查看次数

Android获取PreferenceActivity中的Preference视图

我想获取用于在我的PreferenceActivity中显示特定首选项的View实例,因此我可以修改其属性,例如:

public class SettingsActivity extends PreferenceActivity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preference);
        Preference pref = findPreference("key");
        pref.getView().setVisibility(View.GONE);
            //not necessarily setVisibility, i hope you get my point
    }
}
Run Code Online (Sandbox Code Playgroud)

我只找到了这个方法: getView(View convertView,ViewGroup parent).但是对我来说似乎很困惑,如果我想获得我的偏好视图,我需要提供视图和viewGroup作为参数?

有人可以解释如何使用此方法,或指向另一种方法从我的Preference实例获取View.

PS:如果可能的话,我宁愿不扩展Preference类,但如果有必要,我不介意

android view preference preferenceactivity

10
推荐指数
2
解决办法
1万
查看次数

通过android:widgetLayout自定义CheckBoxPreference

我有一个Preference启用同步适配器,并在切换时需要一段时间来实际工作.因此,当用户单击时Preference,我会关闭AsyncTask来完成工作.在此期间,我禁用Preference并替换复选框与不确定ProgressBar.我所有这一切都是通过一个涉及一个子类的黑客CheckBoxPreference来覆盖它的ProgressBar顶部CheckBox.呸.

android:widgetLayout属性似乎就是为此而设计的.我应该可以android:widgetLayout用来指定默认值的替换CheckBox.所述替换将实现Checkable并使用a ViewSwitcher在a CheckBox和a 之间适当地切换ProgressBar.

唯一的问题是CheckBoxPreference,在其onBindView()方法中,似乎忽略了可能android:widgetLayout使用的可能性.它明确地这样做:

View checkboxView = view.findViewById(com.android.internal.R.id.checkbox);
Run Code Online (Sandbox Code Playgroud)

这实际上使得无法交换自定义Checkable通道android:widgetLayout并使其实际工作.

这是一个疏忽/错误CheckBoxPreference,还是我误解了android:widgetLayout?是否有更清洁的预期方式来做我想做的事情?

android preference

9
推荐指数
2
解决办法
4989
查看次数

在xml文件中实例化内部类(Preference)

如果要在某个layout.xml文件中访问自定义视图,可以使用以下两个选项:

  1. 视图属于它自己的类.然后你做<package.name.MyView android:layout_width= ... />
  2. 视图是内部类: <view class="package.name.OuterClass$MyView" android:layout_width= ... />

现在我想在一个内部做同样的事情<PreferenceScreen>.第一种方法效果很好,但我想将所有自定义Preference类放在我的PreferenceActivity中.我试过<Preference class="package.name.OuterClass$MyPreference" ... />(也用'.'而不是'$')<package.name.OuterClass.MyPreference ... />,但都失败了.

有没有人有想法?

android inner-classes preference preferencescreen android-xml

9
推荐指数
1
解决办法
1261
查看次数

在Resume上的PreferenceActivity中重新加载首选项

在我的应用程序中,一些设置可能会在PreferenceActivity未打开时更改,而我遇到的问题addPreferencesFromResource是调用onCreate,所以说,我打开PreferenceActivity,然后从那里转到另一个屏幕,然后执行一些更改设置,然后按后退键返回PreferenceActivity,然后在布局上没有改变某些设置.

那么,如何在不重复布局的情况下调用所有Preferences每次onResume(或onStart())重新加载?

android reload preference preferenceactivity sharedpreferences

9
推荐指数
1
解决办法
6204
查看次数

如何使用android:layout属性实例化自定义首选项的布局

我可以通过android:layout属性为首选项设置适当的布局.举个例子

<Preference
  android:key="friction" 
  android:title="@string/friction" 
  android:layout="@layout/friction_fragment" 
  android:shouldDisableView="true" 
  android:defaultValue="30" 
  android:enabled="true"
  android:selectable="true" 
  android:summary="Bite friction">
</Preference>
Run Code Online (Sandbox Code Playgroud)

布局在哪里

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
    <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:text="@string/friction" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_height="wrap_content" android:layout_gravity="center_horizontal"></TextView>
    <SeekBar android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/sbFriction"></SeekBar>
    <TextView android:text="@string/friction_little" android:id="@+id/txtSummary" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
    <Button android:text="Button" android:id="@+id/btnFriction" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我可以在PreferenceActivity中获取OnCreate中的视图

    Preference fric = (Preference)this.findPreference("friction");
    View v = fric.getView(null, null);
    SeekBar sbFriction = (SeekBar)v.findViewById(R.id.sbFriction);
    sbFriction.setOnSeekBarChangeListener(this);
    Button btnFric = (Button) v.findViewById(R.id.btnFriction);
    btnFric.setOnClickListener(m_onClick);
Run Code Online (Sandbox Code Playgroud)

但是我设定的这些事件听众并没有被解雇.我如何捕获这些事件,例如 - 单击按钮.编辑.不,它没有发动任何异常.这是更详细的代码

public class SettingsActivity extends PreferenceActivity implements OnPreferenceChangeListener, OnSeekBarChangeListener
{

    private TextView …
Run Code Online (Sandbox Code Playgroud)

layout android preference

9
推荐指数
1
解决办法
6690
查看次数

在Android 4中更改首选项项目摘要文本颜色

我有下面的偏好项目样本

 <CheckBoxPreference
     android:key="chkSound"
     android:summary="Sound is Off"
     android:title="Sound" />
Run Code Online (Sandbox Code Playgroud)

我在res/values中使用主题来更改Summary文本颜色

 <style name="ThemeDarkText">
    <item name="android:textColor">#000000</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

在代码中我写了这一行

    setTheme(R.style.ThemeDarkText);
Run Code Online (Sandbox Code Playgroud)

它在Android 2.1中运行良好,但当我尝试在不同的操作系统上运行它(从Android 4.0开始)它没有改变摘要文本颜色只是标题颜色.. !!

有帮助吗?

android themes colors preference

9
推荐指数
1
解决办法
7421
查看次数

如何设置edittext首选项摘要并让它坚持下去

我已经回到了第四位而且我无法得到它.我正在使用首选项片段设置我的设置.我可以让设置工作,我甚至可以在进行更改时获得更新的"摘要".但是,如果我离开设置屏幕并返回到它,则摘要将恢复为默认文本.所以问题是,当使用edittext首选项时.如何更新摘要,以便显示用户更改设置的内容并使其在关闭屏幕和应用程序时保持不变?在这种情况下,当我的用户更改mse_ip时,摘要将更改为"MSE IP xxxx",但是一旦我离开设置屏幕并返回,它将返回到"0.0.0.0",这是@ string/mseip设置的内容.

的preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">     
    <EditTextPreference
            android:key="mse_ip"
            android:title="MSE IP"
            android:summary="@string/mseip"
            android:defaultValue="0.0.0.0"
            android:dialogTitle="IP Address for mse" />
    <EditTextPreference
            android:key="mse_username"
            android:title="Username"
            android:summary="MSE Username %s"
            android:defaultValue="Admin"
            android:dialogTitle="Username for mse" />
    <EditTextPreference
            android:key="mse_password"
            android:title="MSE Password"
            android:password="true"
            android:summary="******"
            android:defaultValue="Admin"
            android:dialogTitle="Password for mse" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

preferencesfragment

package com.hmkcode.android;

import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;

/*public class PrefsFragment extends PreferenceFragment {

 @Override
 public void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);

  // …
Run Code Online (Sandbox Code Playgroud)

android summary preference android-edittext

9
推荐指数
1
解决办法
1万
查看次数

改变倾听者的偏好

我看过这篇有用的帖子:

SharedPreferences.onSharedPreferenceChangeListener未被一致地调用

但是我没有运气.我正在尝试创建一个在服务中运行的OnSharedPreferenceChangeListener.一切都正确实现,但听众并不总是被触发.

public MyServiceOne extends Service {

    public SharedPreferences mSharedPreferences;

    // Listener defined by anonymous inner class.
    public OnSharedPreferenceChangeListener mListener = new OnSharedPreferenceChangeListener() {        

        @Override
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
            Log.d("debug", "A preference has been changed");            
        }
    };

    @Override
    public void onCreate() {            
        mSharedPreferences = getSharedPreferences(MySharedPreferences.NAME, Context.MODE_PRIVATE);
        mSharedPreferences.registerOnSharedPreferenceChangeListener(mListener);
    }

    @Override   
    public void onDestroy() {
        super.onDestroy();
        mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mListener);
    }
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

问题源于我没有提及的事实.我正在运行两个服务,当在MyService2中进行共享首选项更改时,不会触发任何内容.在清单中,我定义了在不同进程中运行的服务.有没有办法让这项工作?

service android onchange listener preference

8
推荐指数
1
解决办法
1万
查看次数

Android - 我应该继续使用PreferenceActivity吗?

我的应用程序支持2.2到Android版本.问题是,对于"设置"页面,我现在正在使用PreferenceActivity.但是,正如您所知,它的许多方法都已弃用,它们告诉我使用基于片段的设置.但是,我发现如果我切换到使用PreferenceFragment和Fragment Activity,我就不能再支持2.2和2.3了,因为在API级别11以上支持PreferenceFragment.即使我使用支持库,它也不包含PreferenceFragment!我不知道为什么Google没有在支持库中添加PreferenceFragment.

无论如何,我认为我仍然可以使用旧的PreferenceActivity,但如果它说它已被弃用,为什么它不支持其支持库中的替代品呢?

任何建议表示赞赏!

android fragment preference

8
推荐指数
1
解决办法
6498
查看次数