小编Rob*_*met的帖子

边距不起作用

我以编程方式进行了以下布局:

LinearLayout progressLayout = new LinearLayout(this);
    progressLayout.setOrientation(LinearLayout.VERTICAL);

    TextView t = new TextView(this);
    t.setText("Test..");
    t.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);

    LayoutParams l = new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
    l.setMargins(10, 10, 10, 25);   ===> does not work? 
    t.setLayoutParams(l);

    ProgressBar circle = new ProgressBar(this, null,
            android.R.attr.progressBarStyleLarge);
    circle.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));


    progressLayout.setLayoutParams(new LayoutParams(
            android.view.ViewGroup.LayoutParams.FILL_PARENT,
            android.view.ViewGroup.LayoutParams.FILL_PARENT));

    progressLayout.setGravity(Gravity.CENTER);

    progressLayout.addView(t);
    progressLayout.addView(circle);

    this.setContentView(progressLayout);
Run Code Online (Sandbox Code Playgroud)

但是我没有把它作为setMargins中的值给出,它根本没有任何效果.
是什么原因?

布局具有fill_parent的高度和宽度,因此不会出现问题.

谢谢 :)

android android-layout

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

删除edittext的最后一个字符

我有一个快速的问题.

我有一个带有一些数字的屏幕,当你点击其中一个数字时,数字会附加到edittext的末尾.

input.append(number);
Run Code Online (Sandbox Code Playgroud)

我也有一个后退按钮,当用户单击此按钮时我想删除最后一个字符.

目前我有以下内容:

Editable currentText = input.getText();

if (currentText.length() > 0) {
    currentText.delete(currentText.length() - 1,
            currentText.length());
    input.setText(currentText);
}
Run Code Online (Sandbox Code Playgroud)

有更简单的方法吗?input.remove()行中的东西?

android android-edittext

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

来电广播接收器不工作(Android 4.1)

我正试图赶上一个叫做广播的电话,但它没有用.

这是我的表现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.bgPicture"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="9" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />  
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<uses-feature
    android:name="android.hardware.camera"
    android:required="false" />
<uses-feature
    android:name="android.hardware.camera.front"
    android:required="false" />

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
    <receiver android:name=".PhoneStateBroadcastReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>
</application>
Run Code Online (Sandbox Code Playgroud)

这是我的广播接收器

package com.test.bgPicture;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class PhoneStateBroadcastReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(new …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver

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

asynctask中的CursorLoader,无法在未调用Looper.prepare的线程内创建处理程序

在我的应用程序中,我打电话给相机应用程序拍照.在我的活动结果中,我启动了一个asynctask来处理照片.(旋转并上传照片).

我还想从图库中删除照片.为此,我在asynctask中执行以下代码.

// Delete image from gallery
        String[] imageColumns = { MediaStore.Images.Media._ID };
        String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
        String imageWhere = MediaStore.Images.Media._ID + ">?";
        String[] imageArguments = { Integer.toString(captureLastID) };

        CursorLoader imageLoader = new CursorLoader(mActivity);

        imageLoader.setUri(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        imageLoader.setProjection(imageColumns);
        imageLoader.setSelection(imageWhere);
        imageLoader.setSelectionArgs(imageArguments);
        imageLoader.setSortOrder(imageOrderBy);

        Cursor imageCursor = imageLoader.loadInBackground();

        if (imageCursor.getCount() > 0) {
            while (imageCursor.moveToNext()) {
                int id = imageCursor.getInt(imageCursor
                        .getColumnIndex(MediaStore.Images.Media._ID));

                ContentResolver cr = mActivity.getContentResolver();
                cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        MediaStore.Images.Media._ID + "=?",
                        new String[] { Long.toString(id) });
                break;
            }
        }

        imageCursor.close();
Run Code Online (Sandbox Code Playgroud)

我收到了错误

无法在未调用Looper.prepare的线程内创建处理程序

是什么导致此错误,我该如何解决?它是否与我调用loadInBackground这一事实有关,而asynctask已经在后台运行了?

这是我的logcat: …

android android-asynctask

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

如何解析谷歌地图API与JSON的响应?

我想用谷歌地图距离矩阵API计算C#中各点之间的距离.

我使用以下代码来发出请求:

private void MapsAPICall()
    {
        //Pass request to google api with orgin and destination details
        HttpWebRequest request =
            (HttpWebRequest)WebRequest.Create("http://maps.googleapis.com/maps/api/distancematrix/json?origins="
            + "51.123959,3.326682" + "&destinations=" + "51.158089,4.145267" 
            + "&mode=Car&language=us-en&sensor=false");

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        using (var streamReader = new StreamReader(response.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();

            if (!string.IsNullOrEmpty(result))
            {
                Distance t = JsonConvert.DeserializeObject<Distance>(result);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后我想将json答案解析为Distance类:

public struct Distance
{
   // Here I want to parse the distance and duration
}
Run Code Online (Sandbox Code Playgroud)

以下是我收到的json响应示例:http://maps.googleapis.com/maps/api/distancematrix/json?origins = Vancouver + BC &destinations = San + …

c# json google-maps

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

在一个字节中组合2个数字

我有两个数字(从0到9),我想将它们组合成1个字节.数字1取0-3位,数字2取4-7位.

示例:我的编号为3和4.
3 = 0011,4是0100.
结果应为0011 0100.

如何使用这些二进制值创建一个字节?

这就是我目前拥有的:

    public Byte CombinePinDigit(int DigitA, int DigitB)
    {
        BitArray Digit1 = new BitArray(Convert.ToByte(DigitA));
        BitArray Digit2 = new BitArray(Convert.ToByte(DigitB));

        BitArray Combined = new BitArray(8);
        Combined[0] = Digit1[0];
        Combined[1] = Digit1[1];
        Combined[2] = Digit1[2];
        Combined[3] = Digit1[3];  

        Combined[4] = Digit2[0];
        Combined[5] = Digit2[1];
        Combined[6] = Digit2[2];
        Combined[7] = Digit2[3];
    }
Run Code Online (Sandbox Code Playgroud)

使用此代码,我有ArgumentOutOfBoundsExceptions

c# byte bit bitarray

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

将弹出窗口的宽度绑定到其他控件的宽度并带有一些边距

我希望我的弹出窗口与另一个控件的宽度相同,但有一些边距。

我想要的是

 <Popup x:Name="ProfilePopup" Height="Auto"   
      Width="{Binding ActualWidth, ElementName=HeaderContainer}" -10 >
Run Code Online (Sandbox Code Playgroud)

但是你如何做 wpf 中的“-10”部分?或者这只能在代码中实现?

wpf

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

在Html.fromHtml中忽略换行符

我收到了一个包含来自API的换行符的文本,但我无法使换行符正常工作.

这是我要展示的文字的一部分.http://pastebin.com/CLnq16mP(粘贴在那里因为stackoverflow上的格式不正确.)

我试过这个:

termsAndConditionsTextView.setText(Html.fromHtml("<html><body>" + textResponse.getText() + "</body></html>"));
Run Code Online (Sandbox Code Playgroud)

还有这个:

termsAndConditionsTextView.setText(Html.fromHtml(textResponse.getText()));
Run Code Online (Sandbox Code Playgroud)

但是总是忽略换行符(\ r \n)和空格.

我怎样才能解决这个问题?

html android line-breaks

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

将字节中的位解析为枚举

我正在研究一个解析从家庭自动化模块获得的二进制数据的DLL.

但我需要一些关于我的代码的建议.
所以我得到一个带有一些字节的消息,在这种情况下每个位表示一定的条件.

在此输入图像描述

在我目前的每个条件都是枚举的代码中,我将枚举放在一个数组中,并检查是否设置了相应的位.

private void ParseZoneConditionFlag1(int Flag1)  // Flag1 = Hex represenation of byte
{
    Zone_Status_ZoneConditionFlagEnum[] FlagArray = new Zone_Status_ZoneConditionFlagEnum[8];
    FlagArray[0] = Zone_Status_ZoneConditionFlagEnum.Faulted;
    FlagArray[1] = Zone_Status_ZoneConditionFlagEnum.Tampered;
    FlagArray[2] = Zone_Status_ZoneConditionFlagEnum.Trouble;
    FlagArray[3] = Zone_Status_ZoneConditionFlagEnum.Bypassed;
    FlagArray[4] = Zone_Status_ZoneConditionFlagEnum.Inhibited;
    FlagArray[5] = Zone_Status_ZoneConditionFlagEnum.Low_Battery;
    FlagArray[6] = Zone_Status_ZoneConditionFlagEnum.Loss_Supervision;
    FlagArray[7] = Zone_Status_ZoneConditionFlagEnum.Reserved;

    base.CheckBitsSet(FlagArray, Flag1, ZoneConditionFlags_List);
 }

 private void ParseZoneConditionFlag2(int Flag2)
 {
    Zone_Status_ZoneConditionFlagEnum[] FlagArray = new Zone_Status_ZoneConditionFlagEnum[8];
    FlagArray[0] = Zone_Status_ZoneConditionFlagEnum.Alarm_Memory;
    FlagArray[1] = Zone_Status_ZoneConditionFlagEnum.Bypass_Memory;
    FlagArray[2] = Zone_Status_ZoneConditionFlagEnum.Reserved;
    FlagArray[3] = Zone_Status_ZoneConditionFlagEnum.Reserved;
    FlagArray[4] = Zone_Status_ZoneConditionFlagEnum.Reserved;
    FlagArray[5] = Zone_Status_ZoneConditionFlagEnum.Reserved;
    FlagArray[6] = Zone_Status_ZoneConditionFlagEnum.Reserved; …
Run Code Online (Sandbox Code Playgroud)

c# binary enums

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

将复杂对象列表从活动传递到片段

我有一个带有SearchFragment和SearchResultFragment的MainActivity.

当用户按下搜索按钮时,我使用SearchParameters作为参数从SearchFragment回调到MainActivity.

在MainActivity上,我展示了一个LoadFragment并加载了结果.
当我收到结果时,我想将结果对象列表传递给SearchResultFragment.

做这个的最好方式是什么?

我知道你通常会这样做,如果它只是一个结果:

public static SearchResultFragment newInstance(SearchResult result) {
    SearchResultFragment f = new SearchResultFragment();
    Bundle args = new Bundle();
    args.putInt("result", result);  // Make result parceable
    f.setArguments(args);
    return f;
} 
Run Code Online (Sandbox Code Playgroud)

但是如何使用对象列表执行此操作?

我能想到的另一个解决方案是在片段的onAttach方法中引用MainActivity,然后在MainActivity上调用方法getResults().

什么是最好的方式?

android parcelable android-fragments

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