我正在为Android设备制作一个应用程序,我正在尝试在LinearLayout中使用ScrollView,但是当我尝试这样做时,ScrollView会占用LinearLayout中ScrollView之后的所有空间和元素.
例如:
如果ScrollView不是"完整":

如果ScrollView是"完整":

正如您所看到的,按钮消失...
以下是此活动的代码:
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_marginLeft="50dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@drawable/linearlayoutbackground" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nom_des_joueurs"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_marginBottom="30dp" />
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/llPlayersName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/okPlayersName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/ok"
android:background="@drawable/backgroundbutton"
android:layout_marginTop="30dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在LinearLayout中添加ScrollView中的元素之后.
有解决方案吗
谢谢.
我通过Volley向服务器发送请求; 发送后,增加一个显示请求数的变量.
VolleyGeneral.getInstance().addToRequestQueue(jsonObj,TAG);
numberOfReq++;
Run Code Online (Sandbox Code Playgroud)
然后,当我得到响应时,减少该变量.
@Override
public void onResponse(JSONObject response){
numberOfReq--;
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我正在显示一个图像,使用淡入淡出动画2秒然后我完成了活动并转到下一个活动.
但我想在完成活动之前等待所有服务器响应.所以我写这个部分是这样的:
@Override
public void onAnimationEnd(Animation anim){
while(numberOfReq == 0){
numberOfReq = -1;
startActivity(intent);
finish();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果服务器在2秒之前发送响应,则一切都是Okey.
但是如果在2秒后收到回复,活动就没有完成.
对于 UiTest 类设置,我需要从不记得的 Wifi 网络开始。为此,我结合使用了WifiManager.getConfiguredNetworks()和WifiManager.removeNetwork(),这两种方法现在在 Android Q 中均受到限制并已弃用。
现在,由于我在特权模式(超级用户)下运行测试,因此getConfiguredNetworks()方法实际上返回网络的完整列表,并且removeNetwork()删除我通过返回的 WifiConfiguration 的 Id 传递的网络,即使我运行此代码在 Android Q 设备上。
TLDR: 我的问题更多的是这两种方法被弃用而没有得到适当的替换,而不是它们现在毫无价值使用。至少据我所知,这就是我问的原因;当我的测试应用程序以超级用户身份运行时,我有什么办法可以:
在文档中,可以读到:
获取配置的网络()
此方法在 API 级别 29 中已弃用。 a) 请参阅 WifiNetworkSpecifier.Builder#build() 了解触发 Wi-Fi 网络连接的新机制。b) 请参阅 addNetworkSuggestions(java.util.List)、removeNetworkSuggestions(java.util.List) 了解用于添加 Wi-Fi 网络的新 API,以供自动连接到 wifi 时考虑。兼容性说明:对于面向 Build.VERSION_CODES.Q 或更高版本的应用程序,此 API 将返回空列表。
他们链接的解决方案似乎是用于连接 wifi 网络的操作,但这不是我想要的。
PS,我至少会很高兴通过执行 adb shell 命令(如果需要,在超级用户模式下)来做同样的事情。已尝试使用wpa_cli list_networks至少列出所有网络,但似乎不可用。
还尝试删除data/misc/wifi/wpa_supplicant和data/misc_ce/0/wifi/WifiConfigStore.xml,但无济于事。
.gitconfig:
[user]
name = Dr.jacky
email = personal.email@gmail.com
signingKey = ""
[includeIf "gitdir:/Users/drjacky/Projects/CompanyName/"]
path = /Users/drjacky/gitconfigcompanyname/.gitconfig
[core]
excludesfile = /Users/drjacky/.gitignore_global
autocrlf = input
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "sourcetree"]
cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
[commit]
template = /Users/drjacky/.stCommitMsg
gpgSign = false
[gpg]
program = gpg
[tag]
forceSignAnnotated = false
Run Code Online (Sandbox Code Playgroud)
gitconfigcompanyname/.gitconfig:
[user]
name = My Name
email = my.company.email@company.com
Run Code Online (Sandbox Code Playgroud)
.ssh/配置:
# --- Sourcetree Generated ---
Host …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序底部显示一个视图,以显示广告,从我自己的Linux服务器获取.
在重要的一点是,我想在服务器端我自己的控制面板.因此,我无法使用AdMob,Google Ads SDK,或者每个没有开源服务器端面板的SDK.
我搜索得太多了,发现了很多开源项目(客户端和服务器端),但我很困惑.
1-Whats是publisherId?2 - 我可以从自己的服务器上获取广告吗?
两边都有开源库吗?(客户端和服务器)?或者如果没有,使用哪个开源库我可以从我自己的服务器获取广告?
我想将依赖项(HomeViewModel)注入到我的片段(HomeFragment)中。
我有一个类(HomeViewModelImpl),它实现了该抽象(HomeViewModel),并且在这个类中,我当然会重写父级的方法。
抽象类(HomeViewModel )是从BaseViewModel扩展而来的抽象类。
BaseViewModel是一个普通的类,open它是从Android生命周期组件的ViewModel类扩展而来的。
HomeViewModel问题是当我想注入片段时出现错误:
> error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] com.example.mvvm.ui.home.HomeViewModel cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent extends dagger.android.AndroidInjector<com.example.mvvm.MyApplication> {
^
com.example.mvvm.ui.home.HomeViewModel is injected at
com.example.mvvm.ui.home.HomeFragment.viewModel
com.example.mvvm.ui.home.HomeFragment is injected at
dagger.android.AndroidInjector.inject(T)
Run Code Online (Sandbox Code Playgroud)
主页片段:
class HomeFragment : BaseFragment() {
//Error comes from this line
@Inject
lateinit var viewModel: HomeViewModel
}
Run Code Online (Sandbox Code Playgroud)
主页视图模型:
//If I write @Inject annotation here, …Run Code Online (Sandbox Code Playgroud) 我ACTION_CREATE_DOCUMENT在我的应用程序中创建文件时使用了意图。
为了支持范围存储,我尝试使用ACTION_CREATE_DOCUMENT来创建一个文件,但如果该文件已经存在,Android 的存储访问框架 (SAF) 默认将 (n) 附加到该文件并且不会覆盖旧文件。
有什么方法可以找到文件已经存在的方法或用警告强制覆盖文件?
在我的应用程序中,我使用的是工具栏,似乎要消除它周围的边框:

然后我像这样创建它:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:minHeight="?attr/actionBarSize"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
layout="@layout/app_bar_main_light"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
而且我从未找到指定此边框是什么的属性或样式。
我有三个ArrayLists:
一个用于按照输入的顺序存储用户输入,位于主类中.
第二个与第一个完全相同,但它被传递给一个remTrip被复制的方法并返回结果.
第三个是list1在下面的代码中,这是正在处理的代码.
public static ArrayList<String> remTrip( ArrayList<String> a){
//code here
ArrayList<String> list1 = a;
Collections.sort(list1);
//code to remove triplicates from the list and returns the result
}
Run Code Online (Sandbox Code Playgroud)
我想保持第ArrayList<String>一个按照它的顺序(即{"dog", "cat" , "tiger", "cat", "cat"}),但显然是对Collections.sort()所有ArrayLists 进行排序.
我如何只对列表中的一个进行排序而不对其他列表进行排序?
AnimatedNavHost(navController, startDestination = BottomNavItem.Splash.screen_route){
composable(
signup + "/{emailFromSignIn}" + "/{passwordFromSignIn}",
arguments = listOf(
navArgument("emailFromSignIn"){
type = NavType.StringType
},navArgument("passwordFromSignIn"){
type = NavType.StringType
}
}
Run Code Online (Sandbox Code Playgroud)
navController.navigate(signup + "/$textEmail" + "/$textPassword")
Run Code Online (Sandbox Code Playgroud)
我怎样才能传递一个空字符串?
错误:
在导航图中找不到与请求 NavDeepLinkRequest{ uri=android-app://androidx.navigation/signup// } 匹配的导航目的地 NavGraph(0x0) startDestination={Destination(0xb6b16c34) route=splash}
android kotlin android-jetpack android-jetpack-navigation android-jetpack-compose