小编Bob*_*Bob的帖子

listPreference中的自定义行?

我试图创建一个ListPreference但不知何故禁用其中一个项目.有点像灰色或其他东西,没有能力选择它.这将是一个即将推出的功能,我希望它在列表中是不可选择的.

我已经创建了一个自定义ListPreference类,并在该类中自定义适配器,希望使用适配器来创建我想要的.

代码工作,它设置适配器,但没有调用任何适配器函数.我在方法上设置断点,例如getCount()但它们永远不会被调用.

这是我的代码.自定义ListPreference取自http://blog.350nice.com/wp/archives/240

import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.preference.ListPreference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.app.AlertDialog.Builder;

public class CustomListPreference extends ListPreference {

    private boolean[] mClickedDialogEntryIndices;
    CustomListPreferenceAdapter customListPreferenceAdapter = null;
    Context mContext;

    public CustomListPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        mClickedDialogEntryIndices = new boolean[getEntries().length];
    }

    @Override
    protected void onPrepareDialogBuilder(Builder builder) {
        CharSequence[] entries = getEntries();
        CharSequence[] entryValues = getEntryValues();
        if (entries == null || entryValues …
Run Code Online (Sandbox Code Playgroud)

android listadapter listpreference

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

如何获取已安装的媒体播放器列表

在我的应用程序中,我有一个菜单项,我想打开用户首选的媒体播放器,只对音频感兴趣.理想情况下,当用户第一次选择此项目时,如果他们只安装了一个,则会选择手机上唯一的媒体播放器,如果他们有多个,则为他们提供一个列表.然后,我会保留他们的选择,以便下次打开那个.

据我了解,Android没有默认的媒体播放器.我有原始的Droid,它有一个媒体播放器,但我知道其他运营商使用自己的,或者用户可以卸载标准的.

我尝试过一些东西,却无法解决任何问题.

我尝试了这个代码,它应该得到一个支持intent的包列表.它适用于"application/pdf"和"video/*"之类的东西.当我用"audio/*"尝试它时,我得到一个空列表,即使我同时安装了Android媒体播放器和MixZing.也尝试了"媒体/*",什么也没得到.

PackageManager packageManager = getPackageManager();
Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("audio/*");
List list = packageManager.queryIntentActivities(testIntent, 0);
Run Code Online (Sandbox Code Playgroud)

我已经看到这个代码工作并使用默认播放器打开音频文件,但我不想打开文件,我只想打开音频应用程序,就像用户从应用程序抽屉打开它一样.

Intent i = new Intent(Intent.ACTION_VIEW);
Uri u = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1"); 
i.setData(u); 
startActivity(i); 
Run Code Online (Sandbox Code Playgroud)

我能想到的另一件事就是走出去获取最受欢迎的媒体播放器的包名并硬编码,并搜索手机以查看安装了哪些,但这似乎不是最好的方法.我不明白为什么第一段代码不起作用.可能没有为这些应用程序正确设置intent过滤器,或者我使用了错误的代码或mime类型.

media audio android media-player android-intent

6
推荐指数
1
解决办法
6461
查看次数

EditTextPreference禁用按钮?

我希望有一个EditTextPreference,如果EditText字段中没有文本,它将禁用OK按钮.我创建了一个自定义的EditTextPreference类,我可以获取EditText对象并设置TextWatcher,但我找不到禁用该按钮的方法.看起来我只是无法访问对话框中的"确定"和"取消"按钮.

任何人都知道如何获得这些按钮或做我想做的事情?

只有其他选择是尝试从头开始创建一个看起来像模仿EditTextPreference的自定义Dialog.

android dialog preference android-edittext

4
推荐指数
1
解决办法
3859
查看次数

内部对话框内的选项卡布局内的Android listview无法显示滚动条

我有一个扩展Dialog的自定义对话框类.在这里面我有一个带有2个标签的标签布局.在每个选项卡中,我有一个列表视图.一切正常但我不能让滚动条显示出来.

这是我的XML:

<?xml version="1.0" encoding="utf-8"?>

<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TabHost01"
android:layout_width="300dp"
android:layout_height="300dp">

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"/>

    <ListView
        android:id="@+id/ListView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"/>

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

这是我设置的代码的一部分:

    // get this window's layout parameters so we can change the position
WindowManager.LayoutParams params = getWindow().getAttributes(); 

    // change the position. 0,0 is center
    params.x = 0;
    params.y = 250;
    this.getWindow().setAttributes(params); 

    // no title on this dialog
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.myLayout);

// instantiate our list …
Run Code Online (Sandbox Code Playgroud)

android listview dialog tabview

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