小编mar*_*595的帖子

Android布局:父级的一半宽度

我有一个非常简单的布局,我不能让它看起来像我想要的.这是一个带有按钮和Switch的LinearLayout.我希望它们在另一个上面显示,但我希望它们的宽度是父布局的一半.

|--LinearLayout---------|
|                       |
| -----------           |
||   Switch  |          |
| -----------           |
| -----------           |
||   button  |          |
| -----------           |
 ------------------------
Run Code Online (Sandbox Code Playgroud)

我一直在寻找其他类似的答案,但我找不到适合我的解决方案.这是我到目前为止所尝试的:

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:weightSum="2" >

                <Switch
                    android:id="@+id/remember_me_switch"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:hint="@string/remember" />

                <Button
                    android:id="@+id/share_button"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:onClick="loginOnclick"
                    android:text="@string/login_button_text" />

            </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

有了这个,按钮和开关占用了父母的所有空间,而不是仅占用一半.我曾经尝试android:layout_width = 0dp过让孩子们消失.

有什么帮助吗?

android android-layout

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

在Django rest框架中序列化queryset

我正在尝试序列化一组对象.我定义了以下视图方法:

@csrf_exempt
def venue_list(request, user_id):
    """
    Check that the user is requesting his own venues.
    """
    profile = get_profile_for_user_if_match(request.user, user_id)

    if profile is None:
        return HttpResponse(status=status.HTTP_401_UNAUTHORIZED)

    venues = profile.venue_set.all()
    serializer = VenueSerializer(venues)

    return JSONResponse(serializer.data)
Run Code Online (Sandbox Code Playgroud)

它接收一个user_id参数,用于确定用户是否有权访问数据,然后获取要返回的对象集,但它不起作用.

它试图直接序列化集合,而不是它内部的对象,所以它抛出这个追溯:

Traceback:
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
  57.         return view_func(*args, **kwargs)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/wsgi/openshift/business/restful/views/venueViews.py" in venue_list
  22.     return JSONResponse(serializer.data)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/serializers.py" in data
  572.                 self._data = self.to_native(obj)
File "/Users/mariopersonal/Documents/dev/offers/project/offers/venv/lib/python2.7/site-packages/rest_framework/serializers.py" in to_native
  351.             value = field.field_to_native(obj, …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

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

获得权限拒绝例外

我的应用程序中有一个活动允许用户逐个从设备中选择多个文件,我使用的是这样的意图:

Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, getString(R.string.select_attachments_activity_chooser_label)), SELECT_PICTURE);
Run Code Online (Sandbox Code Playgroud)

这工作得非常好,我正在选择Uri的文件,它们看起来像这样:

content://com.android.providers.media.documents/document/image%3A42555
Run Code Online (Sandbox Code Playgroud)

然后,如果文件是图像,我正在解码它:

InputStream streamForDecodeBitmap = MyApp.getContext().getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(streamForDecodeBitmap, null, options);
Run Code Online (Sandbox Code Playgroud)

当用户单击按钮时,我通过意图将Uris列表传递给另一个活动,在此活动中,在AsyncTask中,我在base64中编码该文件以通过网络发送它:

InputStream is = MyApp.getContext().getContentResolver().openInputStream(uri);
byte[] inputData = getBytes(is);
is.close();
return Base64.encodeToString(inputData, Base64.DEFAULT);
Run Code Online (Sandbox Code Playgroud)

问题是当我打开inputStream时,有时它可以工作,但大多数时候我得到这个异常:

E/AndroidRuntime(22270): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{42858fe0 22270:co.uk.manifesto.freeagentapp/u0a246} (pid=22270, uid=10246) requires android.permission.MANAGE_DOCUMENTS or android.permission.MANAGE_DOCUMENTS
Run Code Online (Sandbox Code Playgroud)

这些是我的清单中的所有权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>
Run Code Online (Sandbox Code Playgroud)

我正在使用KITKAT(API 19)测试设备.

android

24
推荐指数
4
解决办法
2万
查看次数

在弹出窗口外触摸时忽略PopupWindow,而不使用弃用的构造函数

我有一个PopupWindow,我希望它在用户触摸外面时解散,所以我调查并发现我必须使用它popup.setBackgroundDrawable(new BitmapDrawable());.问题new BitmpaDrawable()是不推荐使用构造函数.我想在不使用它的情况下找到解决方案.

谁知道怎么解决这个问题?

谢谢!

                final PopupWindow popup = new PopupWindow(sortByView,
                                          ViewGroup.LayoutParams.WRAP_CONTENT,
                                          ViewGroup.LayoutParams.WRAP_CONTENT,            
                                          true);
                popup.setBackgroundDrawable(new BitmapDrawable());
                popup.setOutsideTouchable(true);
                popup.showAsDropDown(v);
Run Code Online (Sandbox Code Playgroud)

android popupwindow

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

Android:静态获取Context是一个好习惯吗?

目前,在我的应用程序中,我有以下课程:

public class MyApp extends Application {

    private static Context context;

    public void onCreate(){
        super.onCreate();
        MyApp.context = getApplicationContext();
    }

    public static Context getContext() {
        return MyApp.context;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用它来在既不是活动也不是片段的类中使用Context.使用存储在此类上的上下文与使用和活动作为上下文之间有什么区别?有这个课程是一个好习惯,还是应该为任何需要它的班级提供一个活动作为背景?

谢谢.

android

12
推荐指数
2
解决办法
1868
查看次数

无法使用npm进行安装,因为openshift中的权限

我想让npm在openshift上工作.当我尝试使用npm install以下方法安装包时:

$npm install bower
npm ERR! Error: EACCES, mkdir '/var/lib/openshift/5425aaa04******0094/.npm'
npm ERR!  { [Error: EACCES, mkdir '/var/lib/openshift/5425aaa04******0094/.npm']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/var/lib/openshift/5425aaa04******0094/.npm' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 2.6.32-431.29.2.el6.x86_64
npm ERR! command "node" "/usr/bin/npm" "install" "bower"
npm ERR! cwd /var/lib/openshift/5425aaa04******0094/app-root/runtime/dependencies
npm ERR! node -v v0.6.20
npm ERR! npm -v 1.1.37
npm ERR! path /var/lib/openshift/5425aaa04******0094/.npm
npm ERR! code EACCES
npm …
Run Code Online (Sandbox Code Playgroud)

npm openshift bower

12
推荐指数
1
解决办法
2508
查看次数

替换freemarker中的换行符

有没有办法替换自由标记上的新行字符?我在尝试这个:

<#assign str = str?replace("(\r\n)+", "</p><p>")>
Run Code Online (Sandbox Code Playgroud)

在java上工作过,但在freemarker中没有.我怎样才能做到这一点?

提前致谢.

html freemarker

9
推荐指数
1
解决办法
8662
查看次数

MVC:服务能否依赖其他服务?

我很高兴使用MVC模式(Spring MVC).我有一个非常简单的问题.服务是否可以依赖其他服务?就像是:

@Service
public class MyFirstService{

   .....

   @Autowired
   private MySecondService secondService;

   ......
 }
Run Code Online (Sandbox Code Playgroud)

这是一个"好习惯"还是应该避免的?

谢谢!

java model-view-controller spring spring-mvc

8
推荐指数
2
解决办法
1970
查看次数

使用@android中的字符串:string

我在Android中有点菜鸟,最近我发现我可以使用Android提供的预定义字符串作为@android:string/cancel@android:string/ok.起初我认为使用它们是一个好主意,因为这是一种重用代码的方法,但现在我对此并不那么肯定.

如果设备配置了我不支持的语言的人安装我的应用程序怎么办?我假设应用程序将使用默认语言,可能是英语,但这些字符串@android:string将被翻译为用户的语言,因此他最终将使用各种语言.

这是真的吗?您对使用@android:string有何看法?

谢谢!

编辑:显然我的问题没有被正确理解.我不是在问如何支持不同的语言.我的问题是关于使用字符串的方便性@string:android,如果使用它们是正确的,或者可能导致不良情况,例如在同一应用程序中混合使用语言.

android

5
推荐指数
1
解决办法
177
查看次数

Java使用泛型

我有一个这样的界面A:

public interface A{
    void myFirstMethod();
    void mySecondMethod();
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个课:

public class MyClass{
    private List<? extends A> elements;

    public MyClass(){
        A obj = new A(){
            @Override
            public void myFirstMethod(){
              //SOME CODE
            }
            @Override
            public void mySecondMethod(){
              //SOME CODE
            }
        };
        elements.add(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

我以前没有使用泛型(只有类似的东西List<String>...),所以我不明白为什么这段代码不能编译.更准确地说,我elements.add(obj);在方法添加的行上得到的错误不适用于这些参数.

编辑:我已经更改了代码,现在elements.add(obj)编译得很好,但我有另一个问题.

public class MyClass{
    private List<A> elements;

    public MyClass(List<A> elements){
        this.elements = elements;
        elements.add(obj);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,它不会编译.

//A1 implements A
List<A1> list = new ArrayList<A1>();
MyClass(list);
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

java generics

5
推荐指数
1
解决办法
99
查看次数