小编use*_*880的帖子

控制资源的视图可见性

我有一个包含两个ImageView的布局.我希望其中一个在纵向中可见,另一个在横向中可见.如何使用资源实现它?(我知道如何以编程方式设置它,但我需要使用资源来实现它的特定用途).

我试过类似的东西

在res/layout/may_layout.xml中:

...
<ImageView
      android:id="@+id/image1"
      android:visibility="@integer/visible_in_portrait"   <<-- is this allowed?
      ...
/>
<ImageView
      android:id="@+id/image2"
      android:visibility="@integer/visible_in_landscape"   
      ...
/>
Run Code Online (Sandbox Code Playgroud)

在res/values/integers.xml中:

...
<!-- NOTE: 0 and 8 are VISIBLE and GONE respectively -->
<integer name="visibile_in_portrait">0</integer>
<integer name="visibile_in_landscape">8</integer>
Run Code Online (Sandbox Code Playgroud)

在res/values-land/integers.xml中:

...
<integer name="visibile_in_portrait">8</integer>
<integer name="visibile_in_landscape">0</integer>
Run Code Online (Sandbox Code Playgroud)

但是当我试图给图像充气时,我得到一个运行时错误(索引超出范围).当我删除android:visibility语句时,程序运行但我看到两个图像.

问:将资源用作android:visibility属性的值的方法是什么?

(如果你想知道为什么以编程方式设置它将无法帮助我,它与使用文件uri位图的app小部件的自动landspace/portrait切换有关).

android android-imageview android-view android-resources

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

主要活动名称必须是.MainActivity吗?

我的应用程序有这个主要活动:

<activity
    android:name=".main.MainActivity"
    ...
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

它从家庭发射器发射没有任何问题.但是,当我尝试从Google的手势搜索启动它时,我收到一条错误消息,指出应用程序没有.MainActivity.

https://play.google.com/store/apps/details?id=com.google.android.apps.gesturesearch

Android应用程序是否需要调用主要活动.MainActivity?如果不是,它是一个软推荐或约定,还是仅仅是对Gesture的错误假设?

android android-activity

7
推荐指数
1
解决办法
7793
查看次数

如何减少TextView行间距

我试图通过设置TextView.setLineSpacing()的否定'添加'来减少TextView中的行间距.除了底线被截断之外,它运行良好.

主要布局

<TextView
    android:id="@+id/text_view"
    android:padding="dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    tools:context=".MainActivity" />
Run Code Online (Sandbox Code Playgroud)

主要活动:(注意

package com.font_test;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/custom_fonts.ttf");
        final TextView tv = (TextView) findViewById(R.id.text_view);
        tv.setTypeface(typeface);
        tv.setTextSize(60);
        tv.setLineSpacing(-30f, 1f);  // *** -30 to reduce line spacing
        tv.setBackgroundColor(0x280000ff);
        tv.setText("gggkiiikkk" + "\n" + "gikgikgik" + "\n" + "kigkigkig");
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致在视图底部截断(注意底线的'g'):

减少行间距会削减底线的

似乎问题与错误的布局测量有关.如果我将TextView设置为

 android:layout_height="fill_parent"
Run Code Online (Sandbox Code Playgroud)

它确实正确呈现:

使用'fill_parent'不会截断底线

知道怎么解决吗?如果它有帮助,我不介意有丑陋的变通方法.我也可以访问FontForge,如果需要我可以修改字体文件.

fonts android truetype textview

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

如何读/写布尔偏好

编辑:此代码实际有效。我在使用它的代码中遇到了问题。无论如何都要保留它,以防任何人发现它有用。

我有一个带有两种方法的类,用于编写和读取布尔持久性首选项。但是,如果我写一个新值然后尝试读取它,我仍然会得到旧值。仅当我终止该应用程序并重新启动它时,我才获得新的价值。知道是什么问题吗?

 Context mContext;

 ....
 public void writeFlag(boolean flag) {
        SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(mContext);
        Editor editor = sharedPreferences.edit();
        editor.putBoolean("mykey", flag);
        editor.commit();
}

public boolean readFlag() {
        SharedPreferences sharedPreferences =
               PreferenceManager.getDefaultSharedPreferences(mContext);
        return sharedPreferences.getBoolean("mykey", false);
}
Run Code Online (Sandbox Code Playgroud)

android preferences sharedpreferences

6
推荐指数
1
解决办法
8203
查看次数

如何避免View.getDrawingCache()中的空指针?

我的应用有此代码段

mView.setDrawingCacheEnabled(true);
mBitmap = Bitmap.createBitmap(mView.getDrawingCache());
Run Code Online (Sandbox Code Playgroud)

其中mView是FrameLayout的自定义子类的实例.该应用程序已成功运行了6个月,拥有数千名用户.最近我收到了一些关于传递给createBitmap()的空指针的报告(可能来自同一个用户但我无法确认).我不知道用户使用的硬件或Android版本.

什么可以导致getDrawingCache()返回null,即使我在它之前启用了缓存?它与新手机的硬件加速有关吗?是因为位图的ram不足吗?还要别的吗?可以预防吗?

编辑:我在这里找到了这个解决方案http://tinyurl.com/7yranvj.这是一个合理的解决方法吗?

mBitmap = Bitmap.createBitmap(mView.getWidth(), mView.getHeight(),
        Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(mBitMap);
mView.draw(canvas);
Run Code Online (Sandbox Code Playgroud)

android android-view

6
推荐指数
1
解决办法
1389
查看次数

BaseAdapter:将hasStableIds()设置为false?

我有一个ListView使用的子类BaseAdapter.适配器使用项目索引(位置)作为id,因此id不稳定(基础数据上的一个操作在两个数据项之间交换).

我需要在我的适配器覆盖hasStableIds()return false

看着BaseAdapter这里的建议

false是默认值

.

http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/widget/BaseAdapter.java

// Is this required? Isn't this the default?
@Override
public final boolean hasStableIds() {
    return false;
}

@Override
public final long getItemId(int position) {
    return position;
}
Run Code Online (Sandbox Code Playgroud)

android android-listview

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

拦截PopupWindow中的Android菜单按钮

我有一个不使用选项菜单的主要活动.我需要实现此行为:1.按下Android菜单按钮时,会显示一个弹出窗口2.再次按下Android菜单按钮时,弹出窗口将被取消.

我知道如何通过覆盖主活动中的onKeyDown()来做#1,但不知道如何做#2.显示弹出窗口时,不再触发主活动的onKeyDown().

当主要活动打开弹出窗口时,如何捕获Android菜单按钮?(在我的例子中,弹出窗口是一个带有膨胀视图的PopupWindow).

顺便说一句,我试图在弹出窗口的主视图上设置一个关键监听器,但它没有被触发

    mTopView.setOnKeyListener(new View.OnKeyListener() {           
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            LogUtil.debug("*** Key: %d", keyCode);
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

android android-keypad android-menu android-view

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

如何修复TextView字体后备?

我有一个本地化为多种语言的程序.它适用于Android 4.x,但有一个字体渲染问题Android 2.3.x. 这是一个重现它的小例子.任何帮助将不胜感激.

主要活动布局.这里没什么特别的.只有两个TextView视图:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/text_view1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        tools:context=".MainActivity" />

    <TextView
        android:id="@+id/text_view2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        tools:context=".MainActivity" />

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

主要活动:

package com.font_test;

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    private static final String TEXT = 
            "\u0440\u0443\u0441\u0441\u043A\u0438\u0439" + 
            "\n" + 
            "pyccknn";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set textview 1
        final Typeface typeface1 = Typeface
                .createFromAsset(getAssets(), "fonts/chelsea.ttf");
        final TextView tv1 = (TextView) …
Run Code Online (Sandbox Code Playgroud)

fonts android textview typeface

5
推荐指数
0
解决办法
1100
查看次数

具有N列的小部件最小宽度?

我应该在widget provider xml minwidth/height中放入哪些数字来实现1,2,3和4行和列?

从查看其他应用程序,我发现人们正在使用72,142,220和294 dips,但在Google小部件指南中找不到任何参考.

这些号码对所有设备都安全吗?它们是否基于Google规范?

编辑:更正为294(是290).

android android-widget

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

计算两种颜色的组合颜色(Over运算符)

这是针对Android应用程序的。假设我有两种Alpha颜色

int color1 = 0x12345678  // aarrggbb
int color2 = 0x87654321
Run Code Online (Sandbox Code Playgroud)

如何在带有color1的图层上计算带有color2的图层的组合颜色?

我在这里找到了讨论和公式,但是在编写我自己的代码之前,先在这里检查它是否已经在Android和/或Java中可用。

http://zh.wikipedia.org/wiki/Alpha_compositing#Analytical_derivation_of_the_over_operator

编辑:请注意,问题的目标不是以位图结尾,而是以颜色结尾(例如aarrggbb int)。

java graphics android

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