我正在开发我已经有ViewPager的应用程序,其中我有ScrollView包含TextView.一切正常,但是当我试图滚动ViewPager时,我必须"画"绝对水平线来刷页面.否则,如果绘制的线不是完全水平的,它将交换ScrollView.
这是我试图解释我的问题的图像.红线代表用户的滑动.

如您所见,最后一个不会滑动ViewPager,而是ScrollView.而且有问题.当您用一只手握住手机时,您正在使用拇指滑动,这意味着您没有绘制完美的水平线,而是与上一个Nexus上显示的线类似的线.所以我的问题是 - 如何提高刷卡效率以改善用户体验?
这是我正在使用的一些代码:
fragment.xml之
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/divider"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp" >
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)
CustomPagerAdapter.java
ScrollView scroll;
TextView text;
@Override
public Object instantiateItem(ViewGroup container, int position) {
//Adding scrollview
scroll = new ScrollView(context);
//Creating TextView
text = new TextView(context);
text.setText(stringArray[position]);
text.setTextAppearance(context, android.R.style.TextAppearance_Medium);
//Adding TextView to ScrollView
scroll.addView(text, 0);
//Adding ScrollView to ViewPager
((ViewPager) container).addView(scroll, 0);
return scroll;
}
Run Code Online (Sandbox Code Playgroud)
Fragment.java
CustomPagerAdapter adapter;
ViewPager pager;
...
///Set adapter
adapter = new CustomPagerAdapter(getActivity().getApplicationContext(), stringArray);
}
pager.setAdapter(adapter);
//Set onPagerChanger …Run Code Online (Sandbox Code Playgroud) 我的两个本地环境存在一个非常奇怪的问题。由于未刷新太长时间,会话过期后,将按预期创建新会话。但是,如果我在公共站点(不受Auth保护)上浏览,则该会话将不会持续,并且每次获取/发布请求都将被忽略,并会创建一个新会话(我可以在XRSF令牌上看到它以及在存储/框架中创建的新文件)。
如果没有用户登录,则一切正常。
如果管理员用户已登录(选中“记住我”),但公共用户未登录,则访问任何公共(不受保护的)路由(使用默认web中间件)将如上所述重新创建会话。但是,一旦我在中间件软件下访问任何路由admin(web中间件+身份验证检查),会话就会停滞,此后,公用路由的问题就会消失。
如果两个用户都登录并且我访问了任何受保护的路由,则会话将立即阻塞。
web中间件不会两次应用于任何路由我的电脑
我的笔记本电脑
同事的笔记本电脑
以下是一些可能对您有用的文件:
APP_NAME=MySite
APP_ENV=local
APP_KEY=base64:dEoI03jGqlhIZS4om6sx7j7aFMmKEweJpN72PijsCTQ=
APP_DEBUG=true
APP_URL=http://mySite
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mySite
DB_USERNAME=root
DB_PASSWORD=password
BROADCAST_DRIVER=log
CACHE_DRIVER=file …Run Code Online (Sandbox Code Playgroud) 我正在尝试重现此ListView项目:
我已成功使用这些代码行(不计算动画xml文件)来实现它:
//Set animation
if(position > lastAnimPosition){
lastAnimPosition = position;
Animation anim = AnimationUtils.loadAnimation(context, R.anim.item_slide_in);
anim.setStartOffset(50 * position);
row.startAnimation(anim);
}
Run Code Online (Sandbox Code Playgroud)
所以动画很好,但是当我向下滚动时,有偏移的问题 - 它只是巨大的,它给人的感觉就像应用程序加载项目太久了.我需要做的是找出何时应该禁用偏移量 - 或者如何仅为第一个显示的项目启用偏移量.
我想为 API 调用实现自定义加密中间件。首先,我读取请求正文 ( IOwinContext.Request.Body) 和标头 (Encryption-Key & Signature)。然后,我解密请求正文,它给了我纯 json 字符串。现在是棘手的部分:我想将这个 json 写回IOwinContextRequest.Body,以便它可以反序列化为对象,然后作为 Controller 方法的参数传递。这是我所做的:
启动:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.Use(typeof(EncryptionMiddleware));
...
}
}
Run Code Online (Sandbox Code Playgroud)
中间件:
public class EncryptionMiddleware : OwinMiddleware
{
public EncryptionMiddleware(OwinMiddleware next) : base(next)
{
//
}
public async override Task Invoke(IOwinContext context)
{
var request = context.Request;
string json = GetDecryptedJson(context);
MemoryStream stream = new MemoryStream();
stream.Write(json, 0, json.Length);
request.Headers["Content-Lenght"] = json.Lenght.ToString();
request.Body = stream;
await Next.Invoke(context);
} …Run Code Online (Sandbox Code Playgroud) 我现在很生气.我需要比较一个字符串和第二个字符串,当第二个字符串的字符可以以某种方式创建第一个字符串.例
foo1 =账单
foo2 = boril
foo2可以创建foo1,因为它包含来自foo1的所有字母.
所以这是我的计划:
秘密=宗教
lettersGuessed = religonvpst
for(i = 0; i < lenSecret; i++){
for(l = 0; l < lenGuessed; l++)
printf("A: %c, B: %c, C: %d\n", secret[i], lettersGuessed[l], count);
if(secret[i] == lettersGuessed[l]){
printf("HI\n");
count++;
break;
}
printf("C: %d\n", count);
}
Run Code Online (Sandbox Code Playgroud)
但变量计数始终保持为0.这是从控制台输出:
正如你从头开始看到的那样,当secret [i] == lettersGuessed [l] in if应该返回true(1)时,它返回false(0).这有什么问题?为什么它不起作用?