小编use*_*184的帖子

屏幕布局仅使用相对大小和填充,而不在xml文件中使用绝对像素定义

我想在Android上布局我的所有屏幕,以便它们与任何屏幕尺寸和分辨率兼容.所以我认为最好的方法是使用weight属性来使用某种相对规范.

我知道如何指定按钮的宽度相对于其父项,但我不知道如何将其应用于布局的所有方面.它背后的逻辑理想情况如下:

horizontalSize = 100%
verticalSize = 100%

Button1:
20% padding to top   <-  no idea, how to do this, (only using fixed sizes in relative layout)
10% height           <-  no idea, how to do this
50% width            <-  with weight attribute
center horizontally  <-  with layout_centerHorizontal

Button2:
20% padding to Button1 <- only know relative with use of fixed pixels
5%  padding to left
30% width
10% height

Button3:
20% padding to Button1
5% padding to right …
Run Code Online (Sandbox Code Playgroud)

xml android

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

捕获"确定"按钮与在Android中的EditText上按"圆形箭头"

我有一个带android:inputType="phone"键盘的EditText ."OK"这个键盘上有一个.我喜欢抓住这个OK btn.但是我不知道关键事件.我想使用这样的代码:

 setOnKeyListener(new OnKeyListener()
            {
                public boolean onKey(View v, int keyCode, KeyEvent event)
                {
                    if (event.getAction() == KeyEvent.ACTION_DOWN)
                    {
                        switch (keyCode)
                        {
                            case KeyEvent.KEYCODE_DPAD_CENTER:
                            case KeyEvent.KEYCODE_ENTER:
                            case KeyEvent.?????????? <- this one please

                                return true;
                            default:
                                break;
                        }
                    }
                    return false;
                }
            });
Run Code Online (Sandbox Code Playgroud)

我希望代码与按"圆箭"不同!

我检查了文档中的所有关键事件但找不到任何内容.谢谢

android keyevent

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

是否可以从 Android/Java 或 iPhone/objective-C 的代码中获取变量名称以进行调试

我经常使用如下定义的常量:

private static final int myConstant_x = 1;
private static final int myConstant_y = 2;

private int anyVariable;
anyVariable = myConstant_x
Run Code Online (Sandbox Code Playgroud)

在调试过程中,以某种方式访问​​日志输出的变量名称而不是值确实很有帮助。

Log.i (TAG,"this is debug output of anyVariable with constant name: " + ????);
Run Code Online (Sandbox Code Playgroud)

输出: “这是常量名称为 myConstant_x 的任何变量的调试输出”

代替

Log.i (TAG,"this is debug output of anyVariable with constant name: " + anyVariable);
Run Code Online (Sandbox Code Playgroud)

输出: “这是常量名称为 1 的任何变量的调试输出”

有什么办法吗?

我知道可以从代码中获取方法名称,但是有没有一种方法也可以以某种方式获取变量名称?

真的很有帮助

谢谢

编辑:更新/更正示例代码 - 对于第一个误导版本感到抱歉

java android objective-c

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

获取Eclipse中类中所有方法的概述透视图

我做了很多xCode编程,发现类中方法的概述视角真的很有帮助.它看起来像这样:

MY_GROUP_1 <- defined with #pragma mark MY_GROUP_1
M method11
M method12
M....
MY_GROUP_2
M method21
M method22
M....
Run Code Online (Sandbox Code Playgroud)

在Eclipse中我只找到了大纲视图,它没有带标题的分组.所以我开始定义方法只是为了将它们滥用为像这样的组名

 /**
     * 
     * @category MessageSequence
     */
    public void __GROUP_1__() {

    }
Run Code Online (Sandbox Code Playgroud)

至少我现在在大纲视图中有一个如下所示的列表:

    __GROUP_1__
    method11
    method12
    method..
   __GROUP_2__
    method21
    method22
    method..
Run Code Online (Sandbox Code Playgroud)

虽然它总比没有好,但我怀疑这是通过其方法来概述类结构的最佳方法.

这样做的正确方法是什么?

非常感谢!

ps我也不知道为什么分组标题方法必须公开.Eclipse不在概述视图中显示私有方法.

编辑:根据"美甲"给出的答案我在这里更新,以便每个人都可以看到它是如何工作的,而不必浪费时间去尝试...

  1. 按照安装说明 http://kosiara87.blogspot.com/2011/12/how-to-install-coffee-bytes-plugin-in.html - 链接找到
  2. 在settings-> java-> editor-> folding-> user defined regions(右侧的选项卡)中设置标识符以启动标识符:region,endidentifier:endregion

现在你可以这样做:

 //region Y
    public void y1() {
    }

    public void y2() {
    }

    //endregion Y
Run Code Online (Sandbox Code Playgroud)

没有设置折叠对我来说不起作用..哦,是的,不要忘记重新启动Eclipse,如果它不能立即工作!

eclipse xcode android

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

BackgroundWorker 在运行时如何从 UI 线程获取值?

我正在使用BackgroundWorker 来执行繁重的任务,这样UI 线程就不会被阻塞。虽然BackgroundWorker 可以使用进度方案将值发送到UI 线程,但是BackgroundWorker 如何从UI 线程获取一些值呢?

是通过询问还是简单地通过 UI 线程向 BackgroundWorker 发送一些值?

仅在BackgroundWorker中访问像UIForm.x这样的UI线程的变量是行不通的,它似乎无法访问UI变量???

非常感谢

vb.net

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

用特殊字符在Android上发起电话呼叫#

我使用以下代码从Android应用程序中启动一个调用:

intent.setData(Uri.parse("tel:+12345 #123"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

当它启动呼叫时,它会忽略以#开头的所有内容.

我读了一些关于修改SpecialCharSequenceMgr.java文件的内容,但我无法在任何地方找到它,老实说,不知道究竟要做什么.解决这个问题的最佳方法是什么?

android phone-call

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

如何找出ViewPager所需的最低API级别

我想使用该ViewPager功能并下载支持包:修订版4(2011年10月).

这需要API 10,但我想为尽可能低的API开发我的应用程序 - 理想情况下是7左右.

如何找出使用ViewPager所需的最低API以及我需要下载并包含在我的应用程序中的库?

非常感谢!

api android

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

从它创建的对象中访问调用活动的方法

我不明白为什么我得到一个编译错误:

   public class Main_screen extends ListActivity {

       List<Object> completeList;
       private My_ArrayAdapter adapter;


    public void onCreate(Bundle icicle) {
       super.onCreate(icicle);
       completeList = getCompleteList();
       adapter = new My_ArrayAdapter(this, completeList);
       setListAdapter(adapter);
       }

    public void doSth() {
                ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

在My_ArryAdapter中:

 public class My_ArrayAdapter extends ArrayAdapter<Object> {

        private final List<Object> list;
        private final Activity context;


        public My_ArrayAdapter(Activity context, List<Object> list) {
           this.context = context;
           this.list = list;

        }

        public void tryIt() {
           context.doSth();   // <-------- THIS DOES NOT WORK, this method can not be called …
Run Code Online (Sandbox Code Playgroud)

methods android

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

在Android上的USB主机模式下需要有关UsbDeviceConnection.bulkTransfer的更多信息

我试图让bulkTransfer在USB主机模式下工作,但参考文档并没有真正解释它.

打电话的时候

bufferTmpLen = mDeviceConnection.bulkTransfer(mEPIN,
        bufferTmp, 4096, TIMEOUT_MS);
Run Code Online (Sandbox Code Playgroud)
  1. 为什么实际数据似乎总是在索引2中的2个字节后开始,在索引0和1中表示什么?总是这样吗?
  2. TIMEOUT_MS参数真的有用吗?我试图将其设置为5000,但该方法没有等待5秒钟来读取数据.大约1秒后出现的数据未被读取.那么如何让它接受在一定时间内收到的所有数据呢?
  3. 代码是否在TIMEOUT期间继续执行?那么例如TIMEOUT = 5000,后续语句是在5秒之后执行还是紧跟在bulkTransfer行之后执行?

我真的很困惑,这种方法的重要信息在任何地方都没有描述.

如果有比标准参考更好的来源,请告诉我.

多谢!

usb android

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

使用ScheduledExecutorService在Android中取消安排计划任务

我使用调度程序来确保我的循环不会花费太长时间,因此如果调度程序触发并结束循环,我将退出循环.

这非常直截了当:

public void startSchedulerForTimeout() {

    Log.i("x", "SCHEDULING TIMEOUT " );
    timeoutForLoopReached = false;
    scheduler.schedule(new Runnable() {
    public void run() {
        timeoutForLoopReached = true;
        Log.i("x", "SET TIMEOUT FLAG ");
        }
     }, 10, TimeUnit.SECONDS);
}
Run Code Online (Sandbox Code Playgroud)

所以在我的代码中我只写:

startSchedulerForUSBMessageTimeout();
while (!done && !timeoutForLoopReached) {
  ...do the loop stuff
}
Run Code Online (Sandbox Code Playgroud)

为了确保在我再次运行循环时不会触发计划任务,我需要取消计划过时的任务(如果我在超时之前结束循环),以便新计时器将在新循环开始时再次启动(而不是在循环执行的第二次之间完成第一个循环后触发的旧的一个)

如何才能取消计划未被触发的任何计划任务以避免此计划任务混淆?

非常感谢!

android scheduled-tasks

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

右对齐EditText - 无法使其与任何属性对齐

我尝试了一切我可能找到的对齐这个EditText元素 - 但它不会.

我在这里错过了什么?正如你所看到的那样,我试过了两次 android:layout_alignParentRight = "true",android:layout_gravity="right"没有运气.

PS.linearLayout只是父亲中具有RelativeLayout的一个元素,但我想这并不重要.

<LinearLayout android:id="@+id/block1"
  android:layout_width="fill_parent"
  android:paddingLeft = "4sp"
  android:padding = "4sp"
  android:layout_height="25sp"
  android:layout_marginTop = "4sp"
  android:layout_below="@+id/Settings_phoneNumbersLbl" 
  android:orientation="horizontal">

    <TextView android:id="@+id/Settings_phoneNumbersT1"
        android:textColor="#000000"
        android:textSize="14sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Settings_phoneNumbersT1"
    />

    <EditText android:id="@+id/myRightAlignedText"
        android:layout_width="170sp"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background"
        android:layout_alignParentRight = "true"
        android:layout_gravity="right"
    />

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

android android-layout

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

主线程调用另一个线程的方法 - 这到底发生了什么?

当主用户线程调用另一个这样的线程中的一系列方法时,我有点困惑

在主线程中:

otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
otherThread.callMethod();
Run Code Online (Sandbox Code Playgroud)

callMethod在另一个线程是从这样的套接字写入和读取:

mmOutStream.write(buffer);
mmOutStream.flush();
while (!finished) {
   if (mmInStream.available() > 0)
   if ((char) (c = (byte) mmInStream.read()) != 'x') {
      responseBuffer[responseBufferLen++] = c;
     } else {
      finished = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

这显然是一种阻塞方案 - 但是在按顺序调用这些方法时,不会阻止主用户线程.

我的意思是阻止所有按钮仍然反应,用户可以毫不拖延地与屏幕交互.怎么可能?

java multithreading android

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