小编Eug*_*mak的帖子

如何遍历共享首选项的所有键?

SharedPreferences有方法getAll,但它不返回任何条目,尽管存在一些键:

PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
Run Code Online (Sandbox Code Playgroud)

返回true

Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
Run Code Online (Sandbox Code Playgroud)

返回空地图

怎么了?如何获取所有共享首选项的列表?

android sharedpreferences

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

Xcode可以构建一个项目但不能在模拟器上运行它

当我从网上下载项目时,有时它可以构建但不运行(XCode - >产品 - >运行被禁用,灰色).当我自己创建项目时,这永远不会发生.可能是什么问题呢?它是否与版本有某种联系?我是iOS开发新手,并从网上下载项目用于学习目的.遗憾的是,无法在模拟器上测试它们.

xcode build ios

41
推荐指数
3
解决办法
5万
查看次数

如何在xml布局文件中将整数标记设置为窗口小部件?

我有简单的布局,但我只能设置字符串标签.如何设置整数标记?

<ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:tag="1"
  android:src="@drawable/image" />
Run Code Online (Sandbox Code Playgroud)

UPDATE

我发现了如何在xml布局中设置Integer标签.我们需要在任何xml资源文件中指定一个整数变量.那看起来应该是这样的:

RES /值/ value.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="int1">15</integer>
<integer name="int2">1</integer>
</resources>
Run Code Online (Sandbox Code Playgroud)

现在我们可以自由地使用"@ integer/int1"或"@ integer/int2"作为我们的xml小部件的标签,例如:

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="@integer/int2"
android:src="@drawable/image" />
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下,我更喜欢以编程方式设置标签:)

tags layout android

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

TranslateAnimation后无法点击按钮

我正试图在点击时移动按钮(带动画).我希望它在第一次点击时向下移动100个像素,在第二个点上移动100个像素,在第三个点上移动100个像素到底部,依此类推.我有简单的布局文件(main.xml):

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Press to begin animation" />
Run Code Online (Sandbox Code Playgroud)

我的发布活动如下:

public class TestActivity extends Activity {
public final String TAG="TestActivity";
boolean toTop=false;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Button b=(Button)findViewById(R.id.button);
    b.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Toast.makeText(TestActivity.this, "left="+v.getLeft()+"\nright="+v.getRight(), Toast.LENGTH_SHORT).show();

            Animation translateAnimation;
            if(toTop) translateAnimation=new TranslateAnimation(0, 0, 0, -100); 
            else translateAnimation=new TranslateAnimation(0, 0, 0, 100);
            translateAnimation.setDuration(1000);
            translateAnimation.setFillEnabled(true);
            translateAnimation.setFillAfter(true);

            v.startAnimation(translateAnimation);
            toTop=!toTop;
        }
    });
}
}
Run Code Online (Sandbox Code Playgroud)

当我按下按钮时,我可以看到它移动到底部.但是当我第二次按它时,没有任何反应.我必须单击按钮的初始矩形才能再次开始动画.看起来按钮按预期绘制,但实际视图保持在同一位置.我想知道如何完全移动视图,而不仅仅是视觉部分.此外,我使用Toast.maketext.show来确保按钮的坐标不会因点击而改变.

animation android

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

更改线程优先级没有效果

我正在尝试使用更改主线程的优先级android.os.Process.setThreadPriority().我在优先级更改之前和之后都有日志消息,这里是代码:

public class TestActivity extends Activity {
    public final String TAG="TestActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        int tid=(int)Thread.currentThread().getId();
        Log.d(TAG,"priority before change = " + android.os.Process.getThreadPriority(tid));
        Log.d(TAG,"priority before change = "+Thread.currentThread().getPriority());
        android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
        Log.d(TAG,"priority after change = " + android.os.Process.getThreadPriority(tid));
        Log.d(TAG,"priority after change = " + Thread.currentThread().getPriority());
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
Run Code Online (Sandbox Code Playgroud)

这意味着优先级没有改变,无论我用什么方法来评估它. android.os.Process.THREAD_PRIORITY_DISPLAY = …

android thread-priority

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

哪里可以找到aapt2日志?

当我尝试构建我的项目时,我收到以下错误:

在此输入图像描述

最后说:"检查日志了解详情".哪里可以找到那些aapt2日志?

android kotlin aapt2

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

带有异步建议的AutocompleteTextView不会显示下拉列表

我想补充TextChangedListenerAutocompleteTextView.在TextChangedListenerafterTextChanged()我调用AsyncTask它加载从网络数据(活动开始时加载所有的数据是不是一种选择,因为列表可能会非常大,所以它成为只是交通的浪费). AsyncTaskonPostExecute()看起来像这样(我用的ArrayAdapter):

    @Override
    protected void onPostExecute(ArrayList<Subregion> result)
    {
        super.onPostExecute(result);
        if (result != null)
        {
            adapter.clear();
            for (Iterator<Subregion> iterator = result.iterator(); iterator.hasNext();)
            {
                Subregion subregion = iterator.next();
                adapter.add(subregion);
            }
            adapter.notifyDataSetChanged();
            autocompleteTextView.showDropDown();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Subregion是我的自定义对象与覆盖toString().我希望我的程序在用户开始输入时开始加载数据,并在收到和解析它们时立即显示结果.

我的问题:

autocompleteTextView.showDropDown()没有效果.onPostExecute()收到正确的数据列表,它们被添加到适配器,但showDropDown()不显示下拉列表.怎么了?

android autocompletetextview

8
推荐指数
2
解决办法
7286
查看次数

android:使用textAppearance属性设置textColor

我在我的应用程序中创建了几种字体样式.

如何将这些样式添加到视图中? - 1)使用样式属性2)使用textAppearance.

使用样式不是一个选项,因为视图可能有其他属性(边距,填充,最小宽度等 - 我不能为视图指定2个样式),所以我需要单独指定与文本相关的属性,但android:textColor在这里不起作用:

styles.xml:

<style name="TextAppearance.baseText" parent="@android:style/TextAppearance">
    <item name="android:textAppearance">?android:textAppearanceSmall</item>
    <item name="android:typeface">sans</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textSize">15sp</item> 
</style>
Run Code Online (Sandbox Code Playgroud)

layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="65dp"
      android:orientation="horizontal" >

      <Button
           android:id="@+id/backButton"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/sometext"
           android:textAppearance="@style/TextAppearance.baseText"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

为什么它不起作用?如何在textappearance中指定textcolor?

android text

5
推荐指数
3
解决办法
3万
查看次数

android seekbar progressdrawable:背景位图不拉伸(高度)

我的布局xml如下:

 <SeekBar
        android:id="@+id/progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_margin="10dp"
        android:gravity="center"
        android:progressDrawable="@drawable/progressbar_drawable"
        android:progress="50"
        android:thumb="@drawable/progressbar_handle_selector"
        android:layout_toLeftOf="@+id/showChat"
        android:layout_toRightOf="@+id/play" />
Run Code Online (Sandbox Code Playgroud)

Seekbar的可绘制进度如下:

@ drawable / progressbar_drawable

  <?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

  <item android:id="@android:id/background" android:drawable="@drawable/bg_progressbar_9patch"/>
  <item android:id="@android:id/progress">
    <clip>
        <shape>
            <gradient
                android:angle="90"
                android:endColor="#d9b546"
                android:startColor="#cc520f" />
        </shape>
    </clip>
  </item>

  </layer-list>
Run Code Online (Sandbox Code Playgroud)

结果,背景位图(白色的)与可绘制的进度条(橙色的)相比,高度不拉伸,并且仍然过低,下面是一个示例: 在此处输入图片说明

而且,在不同的屏幕上它看起来也不同:背景位图与可绘制进度相比具有不同的高度。例如(另一个屏幕):

在此处输入图片说明

我的问题是:为什么进度和背景可绘制对象(橙色和白色条纹)不总是相同的高度?如何使它们具有相同的高度?


更新

Png资源:

在此处输入图片说明 在此处输入图片说明

android seekbar

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

android.permission.CALL_PHONE:为手机和平板电脑制作单个apk:

我希望我的应用程序可用于手机和平板电脑.手机和平板电脑版本的唯一区别是:在"手机"版本中,我的应用程序有按钮,可以拨打一定数量的电话.我的问题是:能够拨打电话我需要为清单文件添加权限 -

<uses-permission android:name="android.permission.CALL_PHONE" />
Run Code Online (Sandbox Code Playgroud)

此权限使应用程序与平板电脑不兼容.如果我删除了该权限,则应用无法在电话上启动呼叫.如何制作支持手机和平板电脑并允许通过手机拨打电话的应用?

android

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