我的应用程序有两种产品风格:
productFlavors {
europe {
buildConfigField("Boolean", "BEACON_ENABLED", "false")
}
usa {
buildConfigField("Boolean", "BEACON_ENABLED", "true")
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想在任务中获取当前的flavor名称(我在Android Studio中选择的名称)以更改路径:
task copyJar(type: Copy) {
from('build/intermediates/bundles/' + FLAVOR_NAME + '/release/')
}
Run Code Online (Sandbox Code Playgroud)
如何在Gradle中获得FLAVOR_NAME?
谢谢
我有以下源代码:
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
controller: scrollController,
slivers: <Widget>[
SliverList(
delegate: SliverChildBuilderDelegate(
(context, cardIndex) {
return Container(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Main Course',
style: kRestaurantMenuTypeStyle,
),
ListView.builder(
itemCount: menuCards[cardIndex].menuItems.length,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
itemBuilder: (context, itemIndex) {
return RestaurantMenuItem(
menuItem: menuCards[cardIndex].menuItems[itemIndex],
);
},
),
],
),
);
},
childCount: menuCards.length,
),
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它ListView.builder()会自动在顶部创建这个额外的空间。如下图所示。这是“主菜”和“Pancit Malabon”文本之间的大空白。
我不明白为什么ListView要这样做。如何删除空格?
我是Android编程的初学者.我已经看过类似的问题和答案,但我仍然无法弄清楚为什么这不起作用.当我在模拟器上尝试此操作并单击某个位置时,不会显示任何标记.这是我的代码:
编辑:当我现在点击以下代码时,我得到一个标记.当我第二次单击地图时,它只给我一个运行时异常(NullPointer异常):
public class MapViewFragment extends Fragment {
MapView mMapView;
private GoogleMap googleMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_map_view, container, false);
mMapView = (MapView) rootView.findViewById(R.id.mapView);
mMapView.onCreate(savedInstanceState);
mMapView.onResume();
Context context = getActivity().getApplicationContext();
final LocationsDB locationsDB = new LocationsDB(context);
try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
public void onMapClick(LatLng point) {
// Drawing marker on the …Run Code Online (Sandbox Code Playgroud) 美好的一天,
我发送的电子邮件类似于:Laravel 5:发送电子邮件.我是这样做的:
$mail_status = Mail::send( 'emails.followup', $data, function( $message ) use ($data) {
$message->to( $data['email'] )
->from( $data['email_from'], $data['email_name'] )
->subject( $data['subject'] );
});
if($mail_status) {
$ret_status = 'sent';
}
else
$ret_status = 'sent_failed';
Run Code Online (Sandbox Code Playgroud)
现在,如果$ret_status是'sent_failed',我想知道发生了什么.我该怎么做?如何从邮件服务器查看邮件?
这是我的.env档案:
MAIL_DRIVER=smtp
MAIL_HOST=mail.mydomain.com
MAIL_PORT=465
MAIL_USERNAME=noreply@mydomain.com
MAIL_PASSWORD=thepassword
MAIL_ENCRYPTION=ssl
Run Code Online (Sandbox Code Playgroud)
更新:
看起来上面的方法是Laravel 4.如果您知道如何使用Laravel 5+获取错误代码,我可以将其视为正确的答案.
我正在按照Android官方网站的建议将所有源代码移动到AS.但是,经验不是很好.这里描述的非常缓慢.但这不是我现在的最终问题.
我已经解决了许多问题,比如更新compileSdkVersion到23以便99这样的错误:
错误:(13)检索项目的父项时出错:找不到与给定名称"android:TextAppearance.Material.Inverse"匹配的资源.
可以纠正.但是当我走的时候,问题仍在继续.现在我有64k Dex问题.
错误:.dex文件中的方法引用数不能超过64K.请访问https://developer.android.com/tools/building/multidex.html,了解如何解决此问题
我Dex在使用Eclipse时从未遇到过这个问题.我在AS中的源代码与它所在的源代码完全相同Eclipse.唯一的区别是只需要在AS上工作的那些gradle更改.知道为什么这个突然的Dex问题?如果我multiDexEnabled愿意true,有什么影响?
我的应用程序在Emulators中运行良好,甚至在android studio安装的实际设备中用于调试目的,但如果使用apk文件手动安装它会崩溃.
我准备粘贴任何其他代码,如活动,如果需要.
这是logcat:
04-14 12:20:44.392 6220-6220/? I/art: Late-enabling -Xcheck:jni
04-14 12:20:44.465 6220-6220/test.planner W/System: ClassLoader referenced unknown path: /data/app/test.planner-1/lib/arm
04-14 12:20:44.467 6220-6220/test.planner I/InstantRun: starting instant run server: is main process
04-14 12:20:44.470 6220-6220/test.planner D/AndroidRuntime: Shutting down VM
04-14 12:20:44.471 6220-6220/test.planner E/AndroidRuntime: FATAL EXCEPTION: main
Process: test.planner, PID: 6220
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{test.planner/test.planner.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "test.planner.MainActivity" on path: DexPathList[[zip file "/data/app/test.planner-1/base.apk"],nativeLibraryDirectories=[/data/app/test.planner-1/lib/arm, /vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417) …Run Code Online (Sandbox Code Playgroud) 这个文档总是困惑我:
对于ID值,通常应使用以下语法形式:"@ + id/name".加号+表示这是一个新的资源ID,aapt工具将在R.java类中创建一个新的资源整数(如果它尚不存在).例如:
<TextView android:id="@+id/nameTextbox"/>
Run Code Online (Sandbox Code Playgroud)
我已经编程了很长一段时间了.但是,我从来没有遇到任何我必须使用没有加号的ID声明的情况.这也是违反直觉的.ID应该是唯一的!
这有什么好的用例吗?为什么要重新使用相同的资源ID名称?
我有一个动画师infinite_rotation,定义为:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:propertyName="rotation"
android:repeatCount="infinite"
android:valueFrom="0"
android:valueTo="360"
android:duration="2000" />
</set>
Run Code Online (Sandbox Code Playgroud)
当时间(时间不确定)到来时我不再需要这个,我打电话infinite_animator.cancel().然后在其布局容器上播放fade_out动画:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:propertyName="alpha"
android:repeatCount="0"
android:valueTo="0.0"
android:duration="1000" />
</set>
Run Code Online (Sandbox Code Playgroud)
生成的动画是,旋转按预期停止,但在淡出时停顿.我错过了什么?
以下是它的外观:
更新:我在使用Kitkat OS的旧三星Tab 4上测试了上述问题.我刚刚使用Marshmallow OS测试了一款相当新的三星Tab 4.动画效果很好.所以我想更好的问题是如何修复旧设备/操作系统上的草率动画?
这是动画调用:
private void animateRefreshButton() {
ImageView iv_refresh = (ImageView) findViewById(R.id.iv_refresh);
if(infinite_animator == null) {
infinite_animator = AnimatorInflater.loadAnimator(this, R.animator.refresh_rotate);
}
infinite_animator.setTarget(iv_refresh);
infinite_animator.start();
}
Run Code Online (Sandbox Code Playgroud)
hideRefreshButton()应用程序确定刷新完成时启动.这是取消和淡出动画的调用:
private void hideRefreshButton() {
if(infinite_animator != null) {
infinite_animator.cancel();
}
Animator anim = AnimatorInflater.loadAnimator(this, R.animator.refresh_fadeout);
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator …Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个简单的脚本,并且在 StackOverflow 中找不到相关问题。这是我的问题。
我有两个盒子。<div class="notselected">如果通过单击事件变为,则框将以蓝色突出显示<div class="selected">。
如果没有选择任何框,则父框应以红色突出显示,如下所示:
这是一个片段:
$(document).ready(function(){
var parent = $(this).find(".parent");
if(parent) {
var selected = parent.find("div.selected");
if(selected) {
selected.css({"color": "blue", "border": "2px solid blue"});
}
else {
parent.css({"color": "red", "border": "2px solid red"});
}
}
});Run Code Online (Sandbox Code Playgroud)
.ancestors *:not(script) {
display: block;
border: 2px solid lightgrey;
color: lightgrey;
padding: 5px;
margin: 15px;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body class="ancestors">
<div class="parent"> Parent Box
<div class="notselected"> Box A </div>
<div class="notselected"> Box B </div>
</div>
</body>Run Code Online (Sandbox Code Playgroud)
请让我知道我缺少什么。谢谢你的帮助!
我想我了解这些枚举是如何根据这篇文章工作的。当我使用以下代码尝试它时,它似乎不起作用。
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.ideographic,
children: <Widget>[
Text(
'abcdefg',
style: TextStyle(
fontSize: 50.0, fontWeight: FontWeight.w900),
),
Text(
'hi',
style: TextStyle(fontSize: 15.0),
),
],
),
Run Code Online (Sandbox Code Playgroud)
但是,无论我选择用作文本基线(表意文字还是失语),结果总是相同的:
我希望“hi”与“abcdefg”的表意基线对齐,而不是像这样与其字母基线对齐:
我究竟做错了什么?
编辑:
两者在Rowwidget的上下文中应该是有区别的。我尝试删除该行textBaseline: TextBaseline.ideographic,但出现此错误:
'package:flutter/src/widgets/basic.dart': Failed assertion: line 3791 pos 15: 'crossAxisAlignment != CrossAxisAlignment.baseline || textBaseline != null': is not true.
Run Code Online (Sandbox Code Playgroud)
要求使用哪个基线必须是 Flutter 知道要对齐哪个基线的方式。