标签: layout-inflater

如何更改选项菜单的背景颜色?

我正在尝试更改选项菜单的默认颜色:白色:我希望选项菜单上的每个项目都有黑色背景.

我在菜单元素中的item元素上尝试了一些类似android:itemBackground ="#000000"的镜头,但它不起作用.

我怎么能做到这一点?

user-interface android layout-inflater

94
推荐指数
9
解决办法
15万
查看次数

在膨胀布局时尝试NPE(尝试在空对象引用上调用虚方法'boolean java.lang.String.equals(java.lang.Object)'

java.lang.NullPointerException当我尝试ScrollView在活动中使用时,我会不断获得.

奇怪的是,我Scrollview在其他活动中使用了完全相同的设置.突然之间,我遇到了错误.我试过清理项目并重建.

而且我已经尝试了这个好老的重启程序.我今天学到了很多关于Null Pointer Exceptions的知识,但是我还没弄清楚为什么我一直在学习渲染问题.

这是java.lang.NullPointerException在XML上引发的:

java.lang.NullPointerException
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:738)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:149)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:835)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:838)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
    at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
    at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:652)
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:80) …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-inflate layout-inflater inflate-exception

52
推荐指数
2
解决办法
1万
查看次数

无条件布局,来自视图适配器的膨胀:应使用View Holder模式

我在日食中得到以下警告:

视图适配器的无条件布局膨胀:应使用View Holder模式(使用传递给此方法的循环视图作为第二个参数)以实现更平滑的滚动.

上:

convertView = vi.inflate(R.layout.activity_friend_list_row, parent, false);
Run Code Online (Sandbox Code Playgroud)

我有一个实现了CheckBox的基础适配器,我添加了一个标签以使CheckBox工作.

这是代码:

 public View getView(final int position, View convertView, ViewGroup parent) 
  {

    ViewHolder mViewHolder;
    mViewHolder = new ViewHolder();
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    convertView = vi.inflate(R.layout.activity_friend_list_row, parent, false);

    mViewHolder.cb = (CheckBox) convertView.findViewById(R.id.checkBox);

    convertView.setTag(mViewHolder);

    if (InviteFriends.isChecked[position] == true)
    {
        mViewHolder.cb.setChecked(true);
    }
    else
    {
        mViewHolder.cb.setChecked(false);
    }

    mViewHolder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean ischecked) 
        {
            if (buttonView.isChecked())
            {
                InviteFriends.isChecked[position] = true;

            }
            else
            {
                InviteFriends.isChecked[position] = false;
            }
        }
    });

    TextView …
Run Code Online (Sandbox Code Playgroud)

java android layout-inflater

48
推荐指数
3
解决办法
3万
查看次数

在DialogFragment中为AlertDialog增加自定义视图的问题

我正在尝试DialogFragment使用自定义视图创建AlertDialog.必须从xml中扩充此视图.在我的DialogFragment班上,我有:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    return new AlertDialog.Builder(getActivity())
        .setTitle("Title")
        .setView(getActivity().getLayoutInflater().inflate(R.layout.dialog, null))
        .setPositiveButton(android.R.string.ok, this)
        .setNegativeButton(android.R.string.cancel, null)
        .create();
}
Run Code Online (Sandbox Code Playgroud)

我尝试过其他通胀方法,.setView()例如:

.setView(getActivity().getLayoutInflater().inflate(R.layout.dialog, (ViewGroup) getView(), false))
Run Code Online (Sandbox Code Playgroud)

.setView(getActivity().getLayoutInflater().inflate(R.layout.dialog, (ViewGroup) getTargetFragment().getView(), false))
Run Code Online (Sandbox Code Playgroud)

在显示此对话框的片段中设置目标片段之后.

所有这些尝试使我的自定义视图膨胀都会导致以下异常:

E/AndroidRuntime(32352): android.util.AndroidRuntimeException: requestFeature() must be called before adding content
E/AndroidRuntime(32352):        at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:214)
E/AndroidRuntime(32352):        at com.android.internal.app.AlertController.installContent(AlertController.java:248)
E/AndroidRuntime(32352):        at android.app.AlertDialog.onCreate(AlertDialog.java:314)
E/AndroidRuntime(32352):        at android.app.Dialog.dispatchOnCreate(Dialog.java:335)
E/AndroidRuntime(32352):        at android.app.Dialog.show(Dialog.java:248)
E/AndroidRuntime(32352):        at android.support.v4.app.DialogFragment.onStart(DialogFragment.java:339)
E/AndroidRuntime(32352):        at android.support.v4.app.Fragment.performStart(Fragment.java:1288)
E/AndroidRuntime(32352):        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:873)
E/AndroidRuntime(32352):        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1041)
E/AndroidRuntime(32352):        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:625)
E/AndroidRuntime(32352):        at …
Run Code Online (Sandbox Code Playgroud)

android android-inflate android-fragments layout-inflater android-alertdialog

47
推荐指数
3
解决办法
6万
查看次数

Android应用程序的插件架构?

本问题已移至https://softwarerecs.stackexchange.com/questions/27841/plugins-architecture-for-an-android-app


我想为开源应用程序实现一个插件系统,因为它已经变得非常庞大,只有少数用户需要许多功能.发布不同的应用程序并不是一个好的解决方案,因为userA需要feature7和feature24而userB需要feature39和feature24.

我在哪里可以找到插件架构的好例子?

这是我想要一个插件能够做到的:

例如,其中一个插件必须在特定屏幕上添加一个按钮,单击此按钮会增加应用程序数据库中的值.据我所知,这对内容提供商和意图不可行.

我想避免让核心应用程序的代码复杂化,到处都是大量的钩子.

插件的形式可以是SD卡上的文件,应用程序或其他任何内容.

android dalvik dex android-inflate layout-inflater

38
推荐指数
3
解决办法
1万
查看次数

在膨胀布局以用于MenuItem的ActionView时,我应该为root传递什么?

我有一个ImageView我附加到MenuItemActionView(项目出现在ActionBar).此视图的布局来自XML.我这样膨胀它:

ImageView actionView = (ImageView) layoutInflater.inflate(
   R.layout.action_view_layout, null);
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.然而; root在调用中传递null inflate()使Lint对我大喊:

避免将null作为视图根传递(需要解析膨胀布局的根元素上的布局参数)

在我的具体情况下,我似乎可以在没有root的情况下进行管理,但我宁愿让代码尽可能正确.问题是,我不确定哪个View应该用作根.这个答案说它应该是"围绕想要膨胀的视图对象的小部件".但这意味着什么呢?动作栏的那一个?活动?还有别的吗?


更新:阅读答案让我怀疑我正确的做法是:

  1. 得到ActionBar View对应的MenuItem
  2. 扎根吧
  3. 把根投成一个 ViewGroup
  4. 将结果传递给inflater

这似乎有效.任何人都可以确认或否认这是否应该做什么?

android actionview menuitem android-layout layout-inflater

37
推荐指数
3
解决办法
2万
查看次数

在Android中获取布局inflater的正确方法是什么?

有一种方法可以获得layoutInflater:

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Run Code Online (Sandbox Code Playgroud)

另一种方式是:

LayoutInflater inflater = LayoutInflater.from(context);
Run Code Online (Sandbox Code Playgroud)

第三个(当我参加活动时)是:

LayoutInflater inflater = getLayoutInflater();
Run Code Online (Sandbox Code Playgroud)

那么他们之间有什么区别?

请注意,当我将第三个inflater发送到我的适配器时,我的应用程序工作.但是当我发送上下文并通过第二种方式创建了inflater时,它没有!

java android layout-inflater

30
推荐指数
3
解决办法
2万
查看次数

setContentView和LayoutInflater有什么区别?

我正在创建一个包含多个片段的选项卡列表.我注意到,在主要活动中,我曾经setContentView获得布局xml并用于findViewById获取相应的UI元素配置.

setContentView(R.layout.fragment_tabs);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabManager = new TabManager(this, mTabHost, android.R.id.tabcontent);
Run Code Online (Sandbox Code Playgroud)

但是,在不同的片段类中,我必须使用inflater.

View v = inflater.inflate(R.layout.webview, container, false);
WebView myBrowser=(WebView)v.findViewById(R.id.mybrowser);
Run Code Online (Sandbox Code Playgroud)

并且这两个函数都用于获取布局xml来创建一个对象,为什么会有区别?是第一个使用期间onCreate,第二个期间使用onCreateView?在什么情况下我应该选择其中之一?

layout android xml-parsing android-lifecycle layout-inflater

25
推荐指数
1
解决办法
1万
查看次数

在android中从XML文件创建View-Object

我只想从xml布局文件中获取一个对象,而不必将其实现到当前布局中.

我知道的方式

LayoutInflater.from(context).inflate(R.layout.myfile, myparent, true);
Run Code Online (Sandbox Code Playgroud)

但执行完上面后,布局将实现并立即显示在我的"myparent"-View中,对吗?我只想让Object本身获得它的属性等.也许(但只是可能)稍后将其插入到所示的布局中.那可能吗?

问候

android android-layout layout-inflater

22
推荐指数
2
解决办法
3万
查看次数

更改android菜单的背景颜色

我正在尝试将标准浅灰色更改为浅绿色.似乎没有一种简单的方法可以做到这一点(例如通过Android主题),但我找到了一个解决方法,如本页所述:http://tinyurl.com/342dgn3.

作者似乎消失了,有人可以帮我整合这段代码吗?我不明白我需要在哪里实现LayoutInflater工厂类.

android background menu layout-inflater

19
推荐指数
2
解决办法
9万
查看次数