Articles of 布局

创build多屏幕支持的应用程序的Android

我正在Android中创build一个必须支持多个屏幕的应用程序。 为了这个目的,我已经阅读了许多答案,我最喜欢的一个状态是,我可以在res文件夹中创build不同的文件夹, 对于小屏幕布局 – 小 , 对于大屏幕布局来说 , 对于超大屏幕布局-xlarge 我必须为同名的不同屏幕创build不同的布局。 如mylayout.xml 我必须把下面的代码放在manifest.xml文件中 <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> 最后我只需要在我的Activity文件中写下下面的代码, setContentView(R.layout.mylayout); 现在,当我在不同大小的屏幕上运行这个应用程序时,它应该根据屏幕分辨率从不同的文件夹获取布局。 但是这不是在我的情况发生。它只需要布局文件夹中定义的布局 。 请有人可以解释一下为什么发生这种情况,我如何解决这个问题,以便我的应用程序可以在所有大小的屏幕上有效地运行。

如何消除LayoutTransitionanimation之前的延迟

我正在尝试Honeycomb中的新的LayoutTransition类。 我已经设置了一个animation,将View添加到ViewGroup时将其放置到位。 我注意到视图第一次渲染和开始LayoutTransition.APPEARINGanimation之间有一个小的延迟(大约20ms)。 换句话说,在屏幕上出现视图之后,它暂时挂在空中,然后开始animation到位。 您甚至可以在ApiDemos示例项目中注意到这一点。 在布局animation示例中,在ViewGroup的APPEARINGanimation开始之前总会有延迟。 我甚至尝试将其他的LayoutTransitionanimation设置为null,或者最后给它们很短的持续时间,但是仍然延迟了APPEARINGanimation。 这是我的代码: public class DebugExampleFour extends Activity { private int numButtons = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.debug_example_four); final ViewGroup frame = (ViewGroup) findViewById(R.id.frame_container); LayoutTransition transitioner = new LayoutTransition(); Animator appearingAnimation = ObjectAnimator.ofFloat(null, "translationX", 600, 0); appearingAnimation.setDuration(45); appearingAnimation.setStartDelay(0); appearingAnimation.setInterpolator(new DecelerateInterpolator()); appearingAnimation.addListener(new AnimatorListenerAdapter() { public void onAnimationEnd(Animator […]

如何以编程方式更改小部件布局背景

以这个小部件布局为例(我整个小部件布局的一部分) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/widget_background_dark_4x2" android:orientation="horizontal" android:id="@+id/widget_main" > 我希望能够更改基于用户select使用的背景绘制。 例如使用远程视图,我可以通过做这样的事情来更新textview的颜色: remoteView.setTextColor(R.id.text_view1, Color.WHITE); 不过,我一直觉得很难为我的线性布局的背景相同。 我做了这个: remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable", ((BitmapDrawable) context.getResources().getDrawable(R.drawable.widget_background_dark_4x2)).getBitmap()); 但是我得到以下错误: 06-01 22:46:36.305: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: view: android.widget.LinearLayout doesn't have method: setBackgroundDrawable(android.graphics.Bitmap) 任何帮助,将不胜感激。 “编辑”也试过这个: Bitmap bitmap = ((BitmapDrawable)context.getResources().getDrawable(R.drawable.widget_background_light_4x2)).getBitmap(); remoteView.setBitmap(R.id.widget_main, "setBackgroundDrawable",bitmap ); 但不幸的是得到以下错误: 06-01 23:11:26.039: WARN/AppWidgetHostView(244): updateAppWidget couldn't find any view, using error view 06-01 23:11:26.039: WARN/AppWidgetHostView(244): android.widget.RemoteViews$ActionException: […]

如何在屏幕方向更改后恢复折叠工具栏布局状态

我一直在寻找我的问题的解决scheme一段时间,并没有find解决办法。 我想在屏幕方向更改后恢复我的分段的布局。 我有横幅图像折叠工具栏布局。 屏幕旋转后,我的工具栏总是展开,我想恢复它的行为。 我怎样才能做到这一点?

如何在Android中以编程方式创build菜单?

现在我想在屏幕底部添加一个菜单。 我写了很多关于,但仍然没有得到如何做到这一点。 我的主要问题是,我没有在我的主页上的XML文件。 它的样子喜欢: public class start extends ListActivity { static final String[] COUNTRIES = new String[] { "NEWS1", "NEWS2","RADIO"}; Intent intent; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, COUNTRIES)); ListView lv = getListView(); lv.setTextFilterEnabled(true); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (((TextView) view).getText().equals("NEWS1")){ intent = […]

在android中popup窗口大小

我在事件onListItemClick中创build一个列表活动的popup窗口。 LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View pop = inflater.inflate(R.layout.popupcontact, null, false); ImageView atnot = (ImageView)pop.findViewById(R.id.aNot); height = pop.getMeasuredHeight(); width = pop.getMeasuredWidth(); Log.e("pw","height: "+String.valueOf(height)+", width: "+String.valueOf(width)); atnot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { pw.dismiss(); } }); pw = new PopupWindow(pop, width, height, true); // The code below assumes that the root container has […]

没有调用View.onMeasure()

我有一个非常简单的自定义视图与onMeasure()重写。 我的onMeasure()根据Drawable的背景决定大小。 当视图首先从xml创build时,一切正常。 但是,我编程设置了不同的背景,所以视图应该resize。 视图现在有不同的背景,但不resize,并且不调用onMeasure() 。 我尝试了一切 – requestLayout() , forceLayout() , invalidate() , setLayoutParams() – 没有任何效果。 我究竟做错了什么? 我只是想要我的视图来resize。

在自定义首选项的onCreateView中加载布局

我可以在onCreateView调用期间从XML加载布局,我试过了: setLayoutResource(R.layout.test); setWidgetLayoutResource(R.layout.test); 它崩溃,我不知道要从方法参数返回一个ViewGroup父项? 我也试过: 查看视图= View.inflate(getContext(),R.layout.test,父),但它没有工作。 我命名根布局widget_frame,但没有帮助 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:padding="1dp" android:clickable="false" android:id="@+id/widget_frame"> <LinearLayout …. 你能告诉我我做错了什么,或者指点我一些实际的例子。 谢谢 更新 以下是关于如何膨胀以上布局的woking解决scheme: LayoutInflater inflater = (LayoutInflater)getContext(). getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.test, parent, false);

安全号码范围为我自己的ID在dynamic布局?

我正在开发一个固定和dynamic布局部分的活动。 dynamic部分(以及创build的小部件的数量和types)基于数据库值:对于每个数据库行,我将有一组小部件。 并且每个组的组件取决于该数据库行的对象types(从其中一列确定)。 为了保存/恢复实例状态,所有的小部件都需要有ID。 我想确保我自己的ID永远不会与生成的R类的ID冲突。 为了更好地处理应用程序(find哪个小部件映射到哪个数据对象的哪个字段),像ID = row * 100 + fieldindex这样的编号scheme将会很有帮助。 Fieldindex并不完全是一个列号。 每个对象types都应该有自己的fieldindices。 由于生成的R中的ID值似乎没有连续的数字,所以我不能只在R中预定义一个ID池,并且在不需要额外映射的情况下使用它们。 对预定义池的第二个原因:大量的fieldindices会导致一个大的ID池。 第三,ID池的大小会限制可以显示的行数。 有一个安全的数字范围,我可以使用我自己的布局组件的ID? 查看gen /文件夹中的R.java,我觉得生成的ID都大于0x7f000000。 这有保证吗? 如果是的话,范围是从0x00000000到0x7f000000可以免费使用,还是为android的内部目的而保留的?

如何获得可以适合Screen / TextView具有特定大小的N文本?

我有一个string格式的大故事。 我想在图库中显示文字。 我想要做的就是把所有的文本切成这样的样子,以便我在图库中的所有视图都能显示出适合屏幕的文字。 这样我就可以制作出一部分string,每个部分都会显示在屏幕上,每个部分都会覆盖整个屏幕。 有一点需要注意的是,用户可以改变文本大小,所以屏幕上的文字也会随着大小的改变而改变。 我想知道有没有办法做到这一点。 请帮帮我 解 非常感谢userSeven7s帮助我。 根据你的例子,我可以做一个例子。 这里是 package com.gsoft.measure.text; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.widget.LinearLayout; import android.widget.TextView; public class MainScreen extends Activity { private final String TAG = "MainScreen"; private String textToBeShown = "These are the text"; private String sampleText = […]