我有一个ListView,每个列表项我希望它在它下面显示一个阴影.我正在使用Android Lollipop的新高程功能在View上设置一个我想要投射阴影的Z,并且我已经使用ActionBar(技术上是Lollipop中的工具栏)有效地做到了这一点.我正在使用Lollipop的高程,但由于某种原因,它没有在列表项下显示阴影.以下是每个列表项的布局设置方式:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
style="@style/block"
android:gravity="center"
android:layout_gravity="center"
android:background="@color/lightgray"
>
<RelativeLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:elevation="30dp"
>
<ImageView
android:id="@+id/documentImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/alphared"
android:layout_alignParentBottom="true" >
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="light"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingBottom="4dp"
android:singleLine="true"
android:text="New Document"
android:textSize="27sp"/>
<appuccino.simplyscan.Extra.CustomTextView
android:id="@+id/documentPageCount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
app:typeface="italic"
android:paddingLeft="16dp"
android:layout_marginBottom="16dp"
android:text="1 page"
android:textSize="20sp"/>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
但是,这是它如何显示列表项,没有阴影:
我也试过以下无济于事:
在Android Studio中,我依靠快捷方式在标签之间移动,并添加了Move Right的快捷方式,这使得任何打开的标签与其他标签分开.唯一的问题是,我现在还不确定如何在不抓住我的鼠标并单击的情况下移回分割另一侧的标签.有没有办法做到这一点?
编辑 - 解决方案:
我最终找到了解决这个问题的方法.因为手动更改ImageView的高度会删除额外的填充,所以我最终找到了原始图像的尺寸,并在计算出ImageView尺寸后将它们应用到ImageView.这是最终结果:

这是最终的工作代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton("Get Pro", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNegativeButton("No thanks", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
final AlertDialog dialog = builder.create();
LayoutInflater inflater = getLayoutInflater();
View dialogLayout = inflater.inflate(R.layout.go_pro_dialog_layout, null);
dialog.setView(dialogLayout);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.show();
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface d) {
ImageView image = (ImageView) dialog.findViewById(R.id.goProDialogImage);
Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
R.drawable.whygoprodialogimage);
float imageWidthInPX = (float)image.getWidth();
LinearLayout.LayoutParams …Run Code Online (Sandbox Code Playgroud) 我有一项服务,我想在后台每分钟执行一项任务.只要用户正在使用手机,它就不需要在手机处于睡眠状态时执行任务.我试图用IntentService这样做,设置如下:
public class CounterService extends IntentService{
public CounterService() {
super("CounterService");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent,flags,startId);
}
@Override
protected void onHandleIntent(Intent intent) {
Toast.makeText(this, "onhandleintent", Toast.LENGTH_SHORT).show();
while(true)
{
//one minute is 60*1000
try {
Thread.sleep(5 * 1000);
Toast.makeText(getApplicationContext(), "getting app count", Toast.LENGTH_LONG).show();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在为了使功能正常工作,我只想让它每隔5秒显示一次吐司,我会在一分钟之后将其更改.如果我已while(true)注释掉,则会显示"onhandleintent"消息.但是,如果我运行以下代码,则不会显示Toasts.我怎样才能解决这个问题?
我目前正在使用不使用NDK的OpenCV(OpenCV4Android)库(没有C或C++代码).但是,armeabi,armeabi-v7a,mips和x86都有.so文件.如果我在项目中包含所有这些,则应用程序大小为30mb,而如果我只包含1,则应用程序大小仅为9mb.如果我尝试在没有包含该设备的架构的.so文件的设备上运行应用程序,它会崩溃,而如果我有它的.so文件,它就可以工作.
因此,我想将多个APK发布到不同的设备架构以减少文件大小.从我所看到的,这只能在Application.mk文件中完成,但我的库没有.是否有其他方法可以针对不同的Android架构?
我试图让视图的宽度基于屏幕的宽度。根据 0 到 100 之间的值,宽度将是屏幕宽度的百分比。以下是我获取 DP 屏幕宽度的方法:
Display display = ((Activity)context).getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density = context.getResources().getDisplayMetrics().density;
float screenWidthDP = outMetrics.widthPixels / density;
Run Code Online (Sandbox Code Playgroud)
这会为我的设备返回 360dp,这是正确的。然后我用它来设置视图的宽度,其中 timeCountNewRange() 返回 0 - 100 之间的值:
int timeCountNewRange = getNewRangeTimeCount(timeCount, min, max);
int widthDP = (int) (((double)timeCountNewRange / 100.0) * screenWidthDP);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthDP, 15);
params.setMargins(5, 0, 0, 0);
appHolder.timeBar.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,当“timeCountNewRange”值为 100 时,它仅占屏幕宽度的 60% 左右,其他所有内容也更短。如果更换
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthDP, 15);
Run Code Online (Sandbox Code Playgroud)
和
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(360, 15); …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个快速的 SplashActivity,它从右向左滑入,然后在 MainActivity 向右滑入时向左滑出。目前,动画 XML 已就位,但它不起作用,启动画面刚刚出现,然后过渡到主要活动也不起作用。这是应用程序的开始活动的 SplashActivity。
public class SplashActivity extends Activity{
private int SPLASH_MILLISECONDS = 1000;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
setContentView(R.layout.activity_splash);
runTimer();
}
private void runTimer() {
Timer timeout = new Timer();
timeout.schedule(new TimerTask()
{
@Override
public void run()
{
runOnUiThread(new Runnable(){
@Override
public void run() {
goToMainActivity();
}
});
}
}, SPLASH_MILLISECONDS);
}
private void goToMainActivity(){
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION );
startActivity(intent);
finish();
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
}
Run Code Online (Sandbox Code Playgroud)
这出于某种原因不起作用,我做错了什么?
编辑:这是我的新 goToMainActivity() 方法,但仍然没有两个动画工作。在这一点上,我不太关心第一个动画的工作,我只希望第二个动画工作。 …
我想要我的应用程序,按一下按钮,启动用户的默认短信应用程序.目的不是让用户发送消息,而是查看他们当前的文本对话,因此我不希望它启动SMS应用程序的"新消息"活动,而是主应用程序的活动本身.
如果我执行以下操作:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
context.startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)
然后启动它,而不是我希望它启动应用程序的主要部分,而不是这个新的消息屏幕:

我对网页设计很陌生,我将制作一个简单的网页。我喜欢这个网页的想法:
顶部不与页面其余部分一起滚动的地方,提供了一个整洁的滚动效果,以及可滚动部分的最顶部就在网页的底部(如“单击”鼠标滚轮,您将立即开始看到滚动部分)。这样的事情是如何成为可能的?
我有一个闹钟,希望每 5 分钟重复一次。出于测试目的,我将其设置为每 5秒重复一次,如下所示:
AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE);
Intent intent = new Intent(getActivity(), CoordinateAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getService(getActivity(), 1, intent, 0);
int repeatSeconds = 5;
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
repeatSeconds * 1000, pendingIntent);
Run Code Online (Sandbox Code Playgroud)
并且接收的IntentService收到报警后会打印一条日志语句。但是,它大约每分半钟发射一次,而不是每 5 秒发射一次,哪里设置不正确?我也尝试使用 setRepeating() 而不是 setInexactRepeating() 但得到相同的结果。
这是我的警报接收器:
public class CoordinateAlarmReceiver extends IntentService {
public CoordinateAlarmReceiver(){
super("CoordinateAlarmReceiver");
}
/*
Alarm received, get new contacts which then shows notification
*/
@Override
protected void onHandleIntent(Intent intent) {
MyLog.i("coordinate alarm received");
//new GetNewContactsTask(this).execute();
}
}
Run Code Online (Sandbox Code Playgroud) 我目前有一个相当简单的页面,由于某种原因,没有应用maincss.css,它只是将背景设置为图像.我知道它有效,因为它在我为jquery样式添加另一个css文件之前工作.怎么回事呢?
<html xmlns=\ "http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
<head>
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
<title>Welcome to Jetty-9</title>
<link href="css/jquery-ui-1.10.3.custom.css" rel="stylesheet">
<link href="css/maincss.css" rel="stylesheet">
<script type='text/javascript' src='js/jquery.js'></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function() {
$( "#dialog" ).dialog({
width: 400,
buttons: [
{
text: "Ok",
click: function() {
$( this ).dialog( "close" );
}
},
{
text: "Cancel",
click: function() {
$( this ).dialog( "close" );
}
}
]
});
});
</script>
</head>
<body>
<div id="dialog" title="Basic dialog">
<p>This is the default dialog which is useful for displaying …Run Code Online (Sandbox Code Playgroud) 我有以下try/catch:
try
{
Player newPlayer = Database::newPlayer(atoi(arguments.at(1).c_str()), arguments.at(2));
}
catch (int e)
{
cout << "Wrong parameters used.\n";
}
Run Code Online (Sandbox Code Playgroud)
我的目标是能够添加一个播放器,如果由于某种原因,参数不匹配,例如为一个非整数arguments.at(1)或不足的参数,但在Visual Studio中,如果我这样做,那么程序崩溃和视觉Studio说"未处理的异常,内存位置的std :: out_of_range".我希望我的程序在发生这种情况时不会崩溃,而只是说"使用了错误的参数",因为它当前在catch语句中.