我正在寻找一种最佳方法来调整包装文本的大小TextView,使其适合其getHeight和getWidth界限.我不是简单地寻找一种包装文本的方法 - 我想确保它既包装又小到足以完全适合屏幕.
我在StackOverflow上看到了一些需要自动调整大小的情况,但它们或者是非常特殊的黑客解决方案案例,没有解决方案,或者涉及TextView递归重新绘制,直到它足够小(这是内存密集并迫使用户观看文本逐步收缩每次递归).
但是我确信那里有人找到了一个很好的解决方案,不涉及我正在做的事情:编写几个重度例程来解析和测量文本,调整文本大小,然后重复直到找到一个合适的小尺寸.
TextView用于包装文本的例程是什么?难道不能以某种方式用来预测文本是否足够小?
tl; dr:是否有一种最佳实践方法可以自动调整大小TextView以适应,包裹,在其getHeight和getWidth范围内?
这是TextView的扩展.getTextSize()并setTextSize()没有被覆盖,我没有扩展这些方法.编程1.6,API级别4.
此代码中的循环导致每次迭代时大小乘以1.5,例如,如果大小最初从200读取getTextSize,则setTextSize(size)调用,getTextSize再次调用则读回300.
public void shrinkTest() {
float size = this.getTextSize();
while (size > 8) {
this.setTextSize(size);
size = this.getTextSize();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
显然,Spongy Castle是使用完整版Bouncy Castle的Android替代品.
但是,在导入jar时我遇到了各种"无法解决"的错误,因为它依赖于Android不包含的软件包,主要是javax.mail,javax.activation和javax.awt.datatransfer.
那么最好的解决方法是什么?回答这个问题,这表明不应该使用这些包,这个流行的问题甚至没有考虑找到一种方法来获得AWT.那么Spongy Castle如何依赖它们呢?人们正在使用Spongy Castle,对吧?
该TabLayout文件给出了嵌套的例子TabItem里面直接TabLayout像这样:
<android.support.design.widget.TabLayout
android:layout_height="wrap_content"
android:layout_width="match_parent">
<android.support.design.widget.TabItem
android:text="@string/tab_text"/>
<android.support.design.widget.TabItem
android:icon="@drawable/ic_android"/>
</android.support.design.widget.TabLayout>
Run Code Online (Sandbox Code Playgroud)
但它没有给出如何在实践中使用它的例子,TabItem的文档说:
此视图实际上并未添加到TabLayout,它只是一个虚拟对象,允许设置选项卡项的文本,图标和自定义布局.
那是TabItem为了什么?经过广泛的谷歌搜索后,我找不到任何人在XML中定义TabItems的例子.有没有办法在资源文件中使用TabItem设置选项卡式活动,如上所示?
当应用程序的进程被终止时,将保存其活动堆栈.然后,当重新启动应用程序时,我的所有活动都会恢复并运行为空指针.我宁愿让我的应用程序从基本活动开始,而不是尝试重新创建活动堆栈,而不是修改每个活动以适应此事件.
这可能吗?
我知道Intent.FLAG_ACTIVITY_CLEAR_TOP,但据我所知,只会在重新创建后杀死活动.
编辑:是clearTaskOnLaunch我想要什么?我已将其添加到我的默认活动中,但看不到任何效果.但即使我只是最小化应用程序,这也会扼杀我的活动,不是吗?如果整个过程重启,我宁愿只清除堆栈.
编辑2:不,这不是我想要的 - 一位Android工程师对如何使用ClearTaskOnLaunch的一些问题做出了彻底的回应:http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f/ab1e2b35c360cb65 ?PLI = 1
我假设这只返回一个int.还有什么事情我应该知道吗?C/C++的差异?
float a = 2.5;
!a; // What does this return? Int? Float?
Run Code Online (Sandbox Code Playgroud) 当虚拟键盘打开时,它会调整我的布局大小.如何将键盘放在我的布局上?它不会重新调整我的布局大小?
尝试使用以下命令从我的Stash项目中提取:
$ git remote add origin https://stash@stash.company.com/scm/~username/project.git
$ git pull origin develop
Run Code Online (Sandbox Code Playgroud)
我被提示输入密码,我输入密码然后得到以下错误:
您的Stash帐户已被标记为需要CAPTCHA才能解决,然后您才能再次登录.这通常是由于尝试使用不正确的密码登录太多而导致的.即使您正确输入密码,所需的CAPTCHA也会阻止您的SCM客户端访问Stash,直到它被解决.如果您当前通过浏览器登录Stash,则可能需要注销然后重新登录才能清除CAPTCHA.
注销并重新登录也无济于事.我该如何解决?
我编译这个程序:
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
使用此命令:
gcc -c "hello.c" -o hello
Run Code Online (Sandbox Code Playgroud)
当我尝试执行你好时,我得到了
bash: ./hello: Permission denied
Run Code Online (Sandbox Code Playgroud)
因为权限是
-rw-r--r-- 1 nathan nathan 856 2010-09-17 23:49 hello
Run Code Online (Sandbox Code Playgroud)
由于某些原因??
但无论如何......在更改权限并尝试再次执行之后,我得到了
bash: ./hello: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)
我正在使用gcc(Ubuntu 4.4.3-4ubuntu5)4.4.3
我在这做错了什么?这是显而易见的......现在为时已晚,让我疲惫不堪的眼睛试图找出这个简单的问题....
PS我(有时)会做比Hello World更复杂的程序,但是gcc正在全面地做这个......
奇怪的问题:是否有可能在资产文件夹中获取文件的最后修改日期,或者这是毫无意义和不可能的?
我问,因为我在应用程序启动时将一个只读数据库复制到数据文件夹中,但是如果现有文件比存储在assets文件夹中的文件旧(或者如果文件),则只会执行复制不存在).
如果那不可能,任何人都知道一个更好的约定?如果需要,我可以在一个单独的问题中发布.TIA!
android ×7
java ×2
textview ×2
android-tabs ×1
assets ×1
binary ×1
bouncycastle ×1
c ×1
c++ ×1
gcc ×1
git ×1
kill ×1
linux ×1
logic ×1
packages ×1
permissions ×1
pixelformat ×1
pixels ×1
process ×1
scale ×1
spongycastle ×1
sqlite ×1
word-wrap ×1
xml ×1