在XML中,我们可以使用以下方式设置drawableLeft:
<Button
android:id="@+id/previewBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/white_btn"
android:drawableLeft="@drawable/green_circle"
android:drawablePadding="16dp"
android:text="Button" />
Run Code Online (Sandbox Code Playgroud)
如何以编程方式做同样的事情?
我正在使用ActionBarSherlock.windowSoftInputMode是adjustPan(我已尝试过adjustResize,adjustNothing也).
我想ActionBar在键盘出现时保持在屏幕上但是滑动我的布局(因此文本仍然可见).
这是它看起来正确的方式:

键盘出现时:

问题是:如何ActionBar在使用时保持可见adjustPan(因此EditTexts始终可见)?
注意
我不能ScrollView用来握住我的View
我正在使用Google Drive Android API(作为Google Play服务的一部分)将文件上传到云端.
要连接客户端,我使用以下代码(简化):
apiClient = new GoogleApiClient.Builder(context)
.addApi(Drive.API)
.setAccountName(preferences.getString("GOOGLE_DRIVE_ACCOUNT", null))
.build();
ConnectionResult connectionResult = apiClient.blockingConnect(SERVICES_CONNECTION_TIMEOUT_SEC, TimeUnit.SECONDS);
if (!connectionResult.isSuccess()) {
throw new ApiConnectionException(); //our own exception
}
Run Code Online (Sandbox Code Playgroud)
要上传文件我正在使用以下代码(简化):
DriveApi.ContentsResult result = Drive.DriveApi.newContents(apiClient).await();
if (!result.getStatus().isSuccess()) {
/* ... code for error handling ... */
return;
}
OutputStream output = result.getContents().getOutputStream();
/* ... writing to output ... */
//create actual file on Google Drive
DriveFolder.DriveFileResult driveFileResult = Drive.DriveApi
.getFolder(apiClient, folderId)
.createFile(apiClient, metadataChangeSet, result.getContents())
.await();
Run Code Online (Sandbox Code Playgroud)
除了一个特定的用户案例外,一切都按预期工作.当用户从"已连接的应用"中删除我们的应用时(使用Google设置应用),此代码仍会返回所有调用的成功结果.虽然文件永远不会上传到Google云端硬盘.
与Google Play服务的连接也会成功.
它是API的错误还是以某种方式检测到用户断开了应用程序?
我得到了
'This class should provide a default constructor'
Run Code Online (Sandbox Code Playgroud)
我正在尝试构建APK时出错
这是我的DBHelper类:
public class DBHelper extends SQLiteOpenHelper {
// create variables
public DBHelper(Context context)
{
super(context, DATABASE_NAME , null, 1);
}
// onCreate
Run Code Online (Sandbox Code Playgroud)
我的印象是
public DBHelper(Context context)
Run Code Online (Sandbox Code Playgroud)
是默认构造函数?并检查了其他答案,找不到任何帮助......
提前致谢
任务:我想为许多类使用一些方法.方法相同,因此不需要为每个类实现它们.在我的情况下 - 我使用Android SDK,我发送http请求到服务器.
问题:有想法使用这样的结构:
class abstract MethodsCarrier{
public static void method1(){ /*something*/ }
public static int method2(){ /*return something*/ }
}
Run Code Online (Sandbox Code Playgroud)
它有效,没有问题.但我不确定这个课程是否抽象.它是一种正确的方式吗?
我正在尝试将AllJoyn用于我的应用程序,但是当我尝试使用示例中的代码(示例13)时,我无法加入会话并获得错误BUS_BLOCKING_CALL_NOT_ALLOWED.
bus.registerBusListener(new BusListener() {
@Override
public void foundAdvertisedName(String name,
short transport,
String namePrefix) {
short contactPort = CONTACT_PORT;
SessionOpts sessionOpts = new SessionOpts();
Mutable.IntegerValue sessionId = new Mutable.IntegerValue();
Status status = bus.joinSession("com.my.well.known.name", //here's error: status = BUS_BLOCKING_CALL_NOT_ALLOWED
contactPort,
sessionId,
sessionOpts,
new SessionListener());
bus.cancelAdvertiseName("com.my.well.known.name",SessionOpts.TRANSPORT_ANY);
}
});
Run Code Online (Sandbox Code Playgroud)
这段代码来自样本,我不知道它有什么问题.你能帮助我吗?
如有必要,请参阅完整代码:http://pastebin.com/f1sD7RtK
我正在尝试创建新频道并自动连接到它,无需用户参与.
我也非常感谢任何好的建议或样品.
bitmap.getByteCount()自API级别12以来,有一种有用的方法.但是如何在API 11中获得相同的值?
这是来自OCJP 6考试的问题,因此故意不完全正确(但合法).
给定代码:
class ToDos {
String day;
public ToDos(String d) {
day = d;
}
public boolean equals(Object o) {
return ((ToDos) o).day == day;
}
public int hashCode() { return 9; }
}
public class MapEQ {
public static void main(String[] args) {
Map<ToDos, String> map = new HashMap<ToDos, String>();
ToDos t1 = new ToDos("Monday");
ToDos t2 = new ToDos("Mond" + "a" + "y");
ToDos t3 = new ToDos("Tuesday");
map.put(t1, "a");
map.put(t2, "b");
map.put(t3, "c");
System.out.println(map.size());
}
} …Run Code Online (Sandbox Code Playgroud) 我是C++的新手,我想了解下面这些例子之间的区别.
我们无法创造功能
void someFunc(int &*a){
int *b=new int; //just for example
a=b;
}
Run Code Online (Sandbox Code Playgroud)
但是使用typedef
typedef int* pint;
void someFunc(pint &a){
int *b=new int; //just for example
a=b;
}
Run Code Online (Sandbox Code Playgroud)
一切正常.
它只是一个编译技巧,还是这种行为更复杂的原因?
我有这样的功能
void doSmth(Long... paramg){
}
Run Code Online (Sandbox Code Playgroud)
但我无法通过long[]代替Long....为什么?我认为这是相同的事情(它们之间的区别是什么?).
我如何通过long []而不是Long ...?
在通过SCJP6考试模拟器时,我发现了这样的问题:
class Clerk implements Runnable {
private Record A, B;
public Clerk(Record a, Record b) {
A = a;
B = b;
}
public void run() {
while(true) {
doStuff(A, B);
}
}
public synchronized void doStuff(Record a, Record b) {
synchronized(a) {
synchronized(b) {
a.add(1);
b.add(-1);
}}
}
}
Run Code Online (Sandbox Code Playgroud)
然后
Record a = new Record();
Record b = new Record();
new Thread(new Clerk(a, b)).start();
new Thread(new Clerk(a, b)).start();
Run Code Online (Sandbox Code Playgroud)
答案说这段代码会导致死锁,但我不明白 - 这究竟是怎么回事?有人可以帮我解决这个问题吗?