我有这个组件:
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon" />
Run Code Online (Sandbox Code Playgroud)
drawableLeft属性中的图像大于文本的字体,因此我希望文本相对于图像垂直居中.我怎么能得到这个效果?
有没有办法在XML中定义一个元素是资源引用的数组?例如(它不起作用,但它解释了我想要的):
<integer-array name="actions_images">
<item>@drawable/pencil</item>
<item>@drawable/pencil</item>
<item>@drawable/pencil</item>
<item>@drawable/pencil</item>
<item>@drawable/pencil</item>
<item>@drawable/pencil</item>
</integer-array>
Run Code Online (Sandbox Code Playgroud) 如果我有一个带有try/finally部分的函数,并且运行它的线程在try块中被中断,那么finally块是否会在中断实际发生之前执行?
我有一个View,需要检测它何时被附加到其父视图.
在ViewGroup
我有这个OnHierarchyChangeListener
让我知道什么时候添加/删除子视图,但我需要相反的事情.
当我定义一个样式时,它可以从父样式继承,例如:
<style name="DialogNoTitle" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
现在我想对可绘制资源做同样的事情,如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android" name="ChildDrawable" parent="@drawable/ParentDrawable">
<solid android:color="@android:color/white"/>
<corners android:radius="6dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
有没有办法完成这个功能?
是否可以以比在OnScrollListener事件中处理它更方便的方式执行此操作?可惜它没有步长属性......
我有一个带有配置活动的app小部件,我想在单击活动中的OK按钮时触发小部件的更新.我写了这段代码:
Intent initialUpdateIntent=new Intent(AppWidgetManager.
ACTION_APPWIDGET_UPDATE);
initialUpdateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
widgetID);
sendBroadcast(initialUpdateIntent);
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,没有调用onUpdate函数!有谁知道问题可能是什么?谢谢.
我有一个自定义视图和一个可绘制的绘图,但由于某种原因,drawable不是在视图的画布上绘制自己.以下是drawable的创建方式:
int[] gradientColors=new int[] { 0xFFFF0000,0xFFFFFF00,0xFF00FF00,
0xFF00FFFF,0xFF0000FF,0xFFFF00FF,0xFFFF0000 };
gradient=new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
gradientColors);
Run Code Online (Sandbox Code Playgroud)
这是onDraw函数:
@Override protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
int width=canvas.getWidth();
int height=canvas.getHeight();
gradientBitmap=Bitmap.createBitmap(width,height,Bitmap.Config.ARGB_8888);
canvas.setBitmap(gradientBitmap);
gradient.setBounds(0,0,width,height);
gradient.draw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我在 onDraw 函数中调用 getDrawingCache 。问题是它只在第一次包含对画布的更改,之后,它根本没有随着新的更改而更新。这是我的代码:
paintAction.draw(canvas);
if (paintAction.isPermanentChange())
{
Bitmap partialBitmap=getDrawingCache();
int numColored=0;
for (int index1=0;index1<partialBitmap.getWidth();index1++)
{
for (int index2=0;index2<partialBitmap.getHeight();index2++)
{
if (partialBitmap.getPixel(index1,index2)==0xFF000000)
numColored++;
}
}
Log.i("PaintDroid","Bitmap pixels: " + numColored);
int areaWidth=partialBitmap.getWidth()-SCROLLBAR_SIZE;
int areaHeight=partialBitmap.getHeight()-SCROLLBAR_SIZE;
int[] pixels=new int[areaWidth*areaHeight];
partialBitmap.getPixels(pixels,0,areaWidth,0,0,areaWidth,
areaHeight);
numColored=0;
for (int index=0;index<pixels.length;index++)
if (pixels[index]==0xFF000000) numColored++;
Log.i("PaintDroid","Pixels: " + numColored);
Run Code Online (Sandbox Code Playgroud)
(setDrawingCache(true) 在视图创建时被调用,因为如果我从 onDraw 调用它,getDrawingCache 将返回 null。)
可以看出,我通过遍历位图和获取数组中的值来计算黑色像素的数量,正如我所说,我第一次得到了我期望的数字,但在那之后,它应该增加,但根本没有改变!
有人知道出了什么问题吗?谢谢。
我正在尝试为触摸事件的视图显示软输入键盘.这条线有效:
inputManager.toggleSoftInputFromWindow(getWindowToken(),0,0);
Run Code Online (Sandbox Code Playgroud)
但这条线不起作用:
inputManager.showSoftInput(this,0);
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如果我想将软输入连接到视图怎么办?谢谢.
我有一个带有自定义适配器的GridView,当我从列表中选择一个项目时,选择器会显示一秒钟并消失.我想自定义适配器会导致它,我尝试使用它和选择器,但无济于事.
这是我的适配器(基于"Hello,Views"中的网格视图示例):
package shira.android.paintdroid;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
class PaintActionsAdapter extends BaseAdapter
{
private Context context;
private int[] actionsImagesResources;
public PaintActionsAdapter(Context context)
{
if (context==null)
throw new IllegalArgumentException("The context must be non-null!");
this.context=context;
/*actionsImagesResources=context.getResources().getIntArray(R.array.
actions_images);*/
actionsImagesResources=new int[6];
for (int counter=0;counter<actionsImagesResources.length;counter++)
actionsImagesResources[counter]=R.drawable.pencil;
}
public int getCount() { return actionsImagesResources.length; }
public long getItemId(int position)
{ return actionsImagesResources[position]; }
public Object getItem(int position)
{ return actionsImagesResources[position]; }
public View getView(int position,View convertView,ViewGroup parent)
{ …
Run Code Online (Sandbox Code Playgroud) android ×11
android-view ×3
android-xml ×1
drawable ×1
interrupt ×1
interruption ×1
java ×1
string ×1
styles ×1
try-catch ×1