我有一个活动,我想显示一个占据应用程序前四分之一的标题,并显示一组动态文本.在某些情况下,它将全部放在一条线上,我希望字体大小可以调整大小,因此它很大且易于阅读.在某些情况下,它将在多行(通常小于4)并且需要更小.
复杂的是,如果我在setText中明确设置换行符,它有时会插入一个我不想要的换行符,即:
"My first line of text\nMy Second line of text"
Might get turned into (it's right adjusted in this version):
"My first line of
text
My second line
of text"
我不确定如何保持TextView不要试图插入换行符或让它只是处理格式化整个事情.如果我将一些文本设置为一个非常长的单个单词,它将在某个选定点的中间插入换行符.有时我只是随机得到最后几行文字.
我是否应该明确地将字体大小设置为非常小以使其正确布局然后手动调整大小?我应该使用"最佳实践"吗?如果我将字体大小设置为一个相当大的字体,那么它的工作方式很有用,但要弄清楚这样做的"正确"方法会很好.而且我宁愿不必手动添加4个单行TextView并自己格式化.
我正在使用的布局xml是:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginTop="10dip"
android:layout_marginRight="8dip"
android:singleLine="false"
android:ellipsize="marque"
android:gravity="right|bottom"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="30sp"
/>
Run Code Online (Sandbox Code Playgroud) 我目前正在研究2.3版本的android,我想将我的应用程序切换到4.0版本但TabActivity不推荐使用.所以我一直在找工作的例子,FragmentTabs但我找不到一个.有人可以帮忙吗?
我有以下代码在进入我的应用程序时立即显示软键盘:
@Override
protected void onResume() {
super.onResume();
...
myEditText.requestFocus();
myEditText.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(myEditText, InputMethodManager.SHOW_IMPLICIT);
}
}, 100);
...
}
Run Code Online (Sandbox Code Playgroud)
但是,在Android 2.1模拟器上,键盘会出现,然后立即消失.如果我延迟更长时间,比如1000,它会可靠地出现.在Android 4.0模拟器上,延迟100可靠地显示键盘,但较短的延迟不会.
有谁知道谁可能隐藏键盘?是否有可靠的方法来预防它?如果没有,是否有延迟我可以用来保证键盘显示?
我想开发一个通用的应用程序.我是这种方法的新手.这意味着平板电脑和手机应用程序的单个apk.我经历过
我的目标是在单个APk中为平板电脑和手机构建不同的UI.
我读过让你的应用程序准备好Jelly Bean和Nexus 7.这篇文章提到了
res/layout/activity_home.xml
To take advantage of the extra space on the 7” screen you might provide an alternative layout:
res/layout-sw600dp/activity_home.xml
The sw600dp qualifier declares that these resources are for devices that have a screen with at least 600dp available on its smallest side.
Furthermore you might even provide a different layout for 10” tablets:
res/layout-sw720dp/activity_home.xml
Run Code Online (Sandbox Code Playgroud)
这意味着我们可以为不同的设备使用不同的布局.这让我很困惑
编辑1 ::场景
假设
if my phone UI layout contains one-view pager and
tablet UI layout contain …Run Code Online (Sandbox Code Playgroud) 我有一个像这样定义的ToggleButton:
<ToggleButton android:text="ToggleButton" android:id="@+id/toggle"
android:layout_height="wrap_content" android:layout_width="fill_parent"></ToggleButton>
Run Code Online (Sandbox Code Playgroud)
我想以编程方式更改其状态.我尝试使用setChecked和toggle方法,但这些都不适用于我的情况.
我有持续通知,当我的活动收到通知意图时,切换按钮应设置为不检查,但它不起作用.
我在活动上这样做onResume.代码正在执行,但ToggleButton的状态不会改变.
奇怪的是,如果我调用setChecked(false)活动,onCreate它会改变按钮的状态,但不会改变onResume.我错过了什么?
谢谢.
在我的应用程序中,我有一个图片库,
但我想检测当前显示的图像的位置,
例如:当我启动我的acvitivity时,位置为0,但是当我在我的画廊中滚动时,我想获得显示当前图像的位置,
我试过OnFocusChanged,OnItemClicked,但只有当我点击我的画廊的一个项目时才有效
有任何想法吗 !:(
我想高效地添加新添加的ListView项目.我认为这很简单容易,但我弄清楚了一个问题:
我想播放TransitionDrawable动画,一旦完成 - 回放它.新项目将在一段时间内升华,然后它将与其他项目融为一体.
TransitionDrawable具有向前和向后播放动画的方法,但没有可用于同步的方法.我期望有可能为动画完成指定回调,例如:
TransitionDrawable transition = (TransitionDrawable) view.getBackground();
transition.startTransition(500, new TransitionCompleteListener(){
public void completed()
{
transition.reverseTransition(500);
}
});
Run Code Online (Sandbox Code Playgroud)
但是TransitionDrawable类不支持这样的东西.
问题是:如何播放TransitionDrawable动画,当它完成时 - 立即向后播放?我有一个使用Timer类来延迟执行动画后退部分的想法,但这个解决方案对于这么简单的事情来说看起来有点太重了.
或者也许我应该使用与TransitionDrawable不同的东西?我想避免使用Property Animations,因为我想支持更旧的设备(自从Honeycomb以来PA都是可用的).
所以我为夜间模式制作了单独的xmls并保留了它们layout-night.
然后我切换到夜间模式:
UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
if (nightMode) {
uiManager.enableCarMode(0);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
} else {
uiManager.disableCarMode(0);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
}
Run Code Online (Sandbox Code Playgroud)
是否可以在不启用汽车模式的情况下设置夜间模式?
或者为此可以使用layout-night, values-night etc文件夹而不使用setNightMode()?
MediaPlayer更改dataSource播放器时我的Android有问题.根据MediaPlayer(http://developer.android.com/reference/android/media/MediaPlayer.html)的规范,我reset在改变时需要玩家dataSource.这样可以正常工作,但只要channelChanged快速连续两次调用该方法,就会MediaPlayer.reset冻结UI.我分析了这里看到的代码:
public void channelChanged(String streamingUrl)
{
long m1 = System.currentTimeMillis();
mMediaPlayer.reset();
long m2 = System.currentTimeMillis();
try
{
mMediaPlayer.setDataSource(streamingUrl);
}
catch (IOException e)
{
e.printStackTrace();
}
long m3 = System.currentTimeMillis();
mMediaPlayer.prepareAsync();
long m4 = System.currentTimeMillis();
Log.d("MEDIAPLAYER", "reset: " + (m2 - m1));
Log.d("MEDIAPLAYER", "setDataSource: " + (m3 - m2));
Log.d("MEDIAPLAYER", "preparing: " + (m4 - m3));
}
Run Code Online (Sandbox Code Playgroud)
重置:3
setDataSource:1
准备:0
重置:3119
setDataSource:2
准备:1
显然,第一次呼叫reset被阻止 …
我有一个ListView,我想让用户能够通过某种手势上下移动项目,例如拖动项目.
是否有一个既定的UI模式来做这样的事情?我不是要求任何示例代码(虽然这样会很好)只是询问他们如何在专业应用程序中执行此操作(如果他们这样做)?