小编Mar*_*tin的帖子

android - 以编程方式设置LayoutParams

我将游戏中的聊天模块放入应用程序中.我将收到的短信添加到LinearLayout视图中.我想将布局参数设置为TextView,但以下代码崩溃,错误消息让我感到困惑.

private void addChat(String chat, String when,  Boolean mine) {
    int leftMargin;

    TextView tv = new TextView(this);
    llview.addView(tv);
    tv.setTextColor(Color.WHITE);
    tv.setTextSize(2,25);
    tv.setText(chat);
    if (mine) {
        leftMargin = 5;
        tv.setBackgroundColor(0x7C5B77);
    }
    else {
        leftMargin = 50;
        tv.setBackgroundColor(0x778F6E);
    }
    final ViewGroup.MarginLayoutParams lpt =(MarginLayoutParams)tv.getLayoutParams();
    lpt.setMargins(leftMargin,lpt.topMargin,lpt.rightMargin,lpt.bottomMargin);

    tv.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT));

}
Run Code Online (Sandbox Code Playgroud)

当它运行时,所有上述代码都会执行,但它会在android运行时崩溃:

03-13 14:15:38.513: E/AndroidRuntime(12985): java.lang.ClassCastException:      android.view.ViewGroup$LayoutParams
Run Code Online (Sandbox Code Playgroud)

并且通过调试器,它实际上处理所有这些行

但是当尝试使用同样神秘的异常详细消息进行渲染时barfs:

android.view.ViewGroup$LayoutParams
Run Code Online (Sandbox Code Playgroud)

那么,到达这个州做了什么?我应该做什么来交替左/右缩进消息?

android

61
推荐指数
4
解决办法
17万
查看次数

Intent.ACTION_VIEW - 多个文件

我需要显示多个文件(每个图像,音乐或视频2个或更多,但只有一个类型).给定一系列缩略图或文件名,用户应该能够选择chekbox并预览选择.如果用户选择多个图像,我希望能够仅显示所选择的图像.如果他选择多个mp3文件,我希望能够只播放那些歌曲.

如果用户只选择一个文件,那很容易做到:

Intent i = new Intent(Intent.ACTION_VIEW);  

if (someType == IMAGE) {
   i.setDataAndType(Uri.fromFile(imageFile),"image/*");
}
else 
   if (sometype == VIDEO) {
      i.setDataAndType(Uri.fromFile(videoFile),"video/mp4");
   }
   else if (someType == MUSIC) {
       i.setDataAndType(Uri.fromFile(musicFile),"audio/mpeg");
   }  
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

但是,如果用户选择一种类型中的两种或更多种类,我如何构建使用用户可能安装的任何图像/音频/视频应用程序的意图?我不想写自定义播放器/观众,因为我知道现有的应用可以做到这一点.

我试图模仿名为"AllShare Play"的云应用程序的功能(https://www.samsung.com/us/2012-allshare-play/).这个应用程序正是我需要在我的应用程序中执行的操作 - 允许用户"预览"多个文件并仅使用标准的"图库"应用程序用于图像,标准音乐应用程序用于歌曲等.在每种情况下,只选择文件使用每个Android设备加载的标准应用程序显示或播放,因此我知道可以不编写查看器或播放器.

任何人有任何想法如何通过Intent.ACTION_VIEW发送多个文件到外部应用程序?

android android-intent

8
推荐指数
1
解决办法
1011
查看次数

使用外键的sqlite查询

请帮助sqlite n00b.

我有两张桌子

   "CREATE TABLE students (" +
          "_id       INTEGER PRIMARY KEY AUTOINCREMENT," +
          "studentname      TEXT not null," +
          "studentpic       BLOB," +
          "comment          TEXT);";
Run Code Online (Sandbox Code Playgroud)

   "CREATE TABLE classes (" +
           "_id              INTEGER PRIMARY KEY AUTOINCREMENT," +
           "classname        TEXT," +
           "attend           INTEGER," +
           "late             INTEGER," +
           "dtime            TEXT," +
           "student          INTEGER REFERENCES students(_id) on
                             UPDATE CASCADE);";
Run Code Online (Sandbox Code Playgroud)

我想在特定的类中显示学生列表,但我的classes表仅通过student-id引用它们,如何构造查询以将"classes"表的所有字段拉回单个游标但使用实际名称从'学生'表?

提前谢谢了

sqlite android

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

Android上的Achartengine - 多个Y轴

很难让多个Y轴在Android上使用achartengine显示在图表上.我试图复制在"多温度图表"演示中所做的工作:http://code.google.com/p/achartengine/source/browse/trunk/achartengine/demo/org/achartengine/chartdemo/demo/ chart/MultipleTemperatureChart.java但它不会在右侧显示Y轴,也不会显示我想要显示的Yaxis标签.

任何想法我的代码可能做错了什么:

    mCurrentCostSeries = new XYSeries(costTitle);
    mCurrentEffSeries = new XYSeries(effTitle);

    mDataset.addSeries(mCurrentCostSeries);
    mDataset.addSeries(mCurrentEffSeries);



    int[] colors = new int[] { Color.RED, Color.YELLOW };
    PointStyle[] styles = new PointStyle[] { PointStyle.POINT, PointStyle.DIAMOND };
    mRenderer = new XYMultipleSeriesRenderer(2);
    setRenderer(mRenderer, colors, styles);
    int length = mRenderer.getSeriesRendererCount();
    for (int i = 0; i < length; i++) {
      XYSeriesRenderer r = (XYSeriesRenderer) mRenderer.getSeriesRendererAt(i);
      r.setLineWidth(3f);
    }

    mRenderer.setApplyBackgroundColor(true);
    mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50));

    mRenderer.setAxesColor(Color.LTGRAY);
    mRenderer.setZoomButtonsVisible(true);
    mRenderer.setPointSize(10);

    mRenderer.setChartTitle("Fuel Efficiency and Cost");


    mRenderer.setShowGrid(true);
    mRenderer.setXLabelsAlign(Align.RIGHT);
    mRenderer.setYLabelsAlign(Align.RIGHT);


    mRenderer.setYTitle(cunits,0);

    mRenderer.setLabelsColor(Color.WHITE); …
Run Code Online (Sandbox Code Playgroud)

android achartengine

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

jetpack Compose with Coil 不加载 URL 图像

Jetpack Compose 和 Coil 的新手,但 Android 或 Java/Kotlin 的新手。

我无法显示 URL 中的图像...缺少一些基本内容?

我从( https://developer.android.com/jetpack/compose/tutorial )获取了 Google/Android 教程,并将其添加到 gradle 脚本中:

implementation("io.coil-kt:coil:2.0.0-rc03")
implementation("io.coil-kt:coil-compose:2.0.0-rc03")
Run Code Online (Sandbox Code Playgroud)

我在消息中添加了一个字符串 url:

data class Message(val author: String, val url: String, val body: String)
Run Code Online (Sandbox Code Playgroud)

并将 URL 添加到示例数据中:

Message(
        "Colleague",
        "http://martypants.us/images/person4.png",
        "Searching for alternatives to XML layouts..."
    )
Run Code Online (Sandbox Code Playgroud)

在我的 @Composable 中,我将其更改为使用 AsyncImage 来加载 URL,而不是可绘制的

@Composable
fun MessageCard(msg: Message) {
    Row {
     AsyncImage(
        model = ImageRequest.Builder(LocalContext.current)
            .data(msg.url)
            .build(),
        placeholder = painterResource(R.drawable.ic_profile),
        error = painterResource(R.drawable.ic_error),
        contentDescription = stringResource(R.string.description),
        contentScale = ContentScale.Fit,
        modifier = …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose coil

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

三星Galaxy S adb驱动程序详情?

我在泡菜.我住在韩国,教英语,但我正在开发一个Android应用程序.我想测试我的三星Galaxy S.无法找到它的adb驱动程序,因为我能找到的唯一驱动程序是美国版本的设备.有人有这个设备的驱动程序详细信息

android driver adb

4
推荐指数
1
解决办法
5772
查看次数

无法在/ mnt/sdcard中创建文件夹

我想我正在做一切正确的事情,首先创建一个文件夹,我可以稍后在我的应用程序中写入,但它似乎没有工作.关于我如何失败的任何线索?

它正确地尝试创建/ mnt/sdcard/gradebook

我的清单中有use-permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE".我正在运行一个真实设备(三星Galaxy S),而且我没有使用SD卡作为存储,而它连接到我的电脑.

    boolean mExternalStorageAvailable = false;
    boolean mExternalStorageWriteable = false;
    String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state)) {
        // We can read and write the media
        mExternalStorageAvailable = mExternalStorageWriteable = true;
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        // We can only read the media
        mExternalStorageAvailable = true;
        mExternalStorageWriteable = false;
        Toast.makeText(this,"This Application needs a writable external storage (sdcard).",Toast.LENGTH_SHORT).show();
        finish();
    } else {
        // Something else is wrong. It may be one of many other states, but all …
Run Code Online (Sandbox Code Playgroud)

android

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

Android aar 未能在项目布局中找到 ID

我创建了一个自定义日历视图组,除其他元素外,它还包含一个允许用户选择年份的微调器。此自定义视图将在多个应用程序中使用,因此创建像 AAR 这样的可重用的东西是有意义的。我需要做一些特定的样式,这样无论我将其部署在哪里,视图看起来都是一样的。

我的自定义视图组查找并呈现视图组的主布局。但是,当用户点击年份微调器并想要更改年份时,适配器无法找到下拉列表布局的文本 ID。我已经检查了我的 APK 中的合并清单,并且可以从我的 AAR 中看到布局和文本 ID,但它在点击时崩溃,并出现以下错误:

java.lang.RuntimeException: Failed to find view with ID us.martypants.mycustomviewgroup:id/current_year in item layout
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我使用 android 的布局(即 android.R.layout.simple_spiner_item 和 android.R.id.text1)而不是自定义布局和 textId,APK 可以找到资源,显示选择列表并设置结果 -虽然我需要的样式不存在。

自定义视图:

package com.algtskr.algtskrcommon


class DropdownAgeSelectView (context: Context, attrs: AttributeSet): RelativeLayout(context, attrs),
AdapterView.OnItemSelectedListener {


private var mCounterColor = 0
private var mAge = 0

init {
    LayoutInflater.from(context)
        .inflate(R.layout.dropdown_ageselect_layout, this, true)


    attrs.let {
        val typedArray = context.obtainStyledAttributes(it,
            R.styleable.DropdownAgeSelectView, 0, 0)

        mCounterColor = typedArray.getColor(R.styleable.DropdownAgeSelectView_counter_color, 0)
        mAge = typedArray.getInteger(R.styleable.DropdownAgeSelectView_initial_value, 0)

        typedArray.recycle()
    }

    val adapter …
Run Code Online (Sandbox Code Playgroud)

android

4
推荐指数
1
解决办法
1830
查看次数

getView没有被调用?

我有一个扩展simplecursoradapter的适配器.新视图应该从数据库中获取光标和图像,使用几个复选框填充列表.由于某种原因我似乎无法看到,我的getView甚至没有被调用.我在getView中有一个断点,它永远不会到达那里,列表只显示为空.任何人都可以通过看看我做错了什么

public class TakeStudentAttendance extends ListActivity {
private gradeBookDbAdapter mDbHelper;
private Long mRowId;
private TextView mNameText;
private String classname;
private Boolean new_attendance = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Cursor stud;

    mDbHelper = new gradeBookDbAdapter(this);
    mDbHelper.open();
    mRowId = (savedInstanceState == null) ? null
            : (Long) savedInstanceState
                    .getSerializable(gradeBookDbAdapter.KEY_ROWID);
    if (mRowId == null) {
        Bundle extras = getIntent().getExtras();
        mRowId = extras != null ? extras
                .getLong(gradeBookDbAdapter.KEY_ROWID) : null;
    }
    // pull in class data
    stud = mDbHelper.fetchClass(mRowId);
    startManagingCursor(stud);

    classname = …
Run Code Online (Sandbox Code Playgroud)

android

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

开始活动并返回不同的活动

如何将活动返回到另一个活动而不是名为startactivity的活动?

我有一个游戏,用户可以选择从现有游戏列表中进行游戏或选择开始新游戏.当开始一个新游戏时,如果游戏列表变为活动状态而不是回到活动来创建新游戏,那么当用户完成游戏时我会喜欢它.

在各种活动中,

它目前的作用:

 selectGames  
        playGame --- return to selectGames
           or
        createNewGame --- playGame --- return to createNewGame --- return to selectGames
Run Code Online (Sandbox Code Playgroud)

我想它:

 selectGames  
        playGame --- return to selectGames
           or
        createNewGame --- playGame --- return to selectGames
Run Code Online (Sandbox Code Playgroud)

有没有办法插入一个或多个意图,当从createNewGame开始一个活动时,用户可以完成或暂停游戏并返回selectGames?如果意图在堆栈上,我想从意图堆栈中删除createNewGame(这有意义吗?)

android

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