小编Ale*_*nez的帖子

在Android中以编程方式获取视图名称

我正在做一个小型库来封装适配器功能,我需要以编程方式获取视图的名称.例如:

<ImageView
        android:id="@+id/**ivPerson**"
        android:layout_width="80dp"
        android:layout_height="80dp"/>
Run Code Online (Sandbox Code Playgroud)

现在,在代码中我有视图(ImageView),我需要获取视图的名称 - > ivPerson.我可以通过view.getId()获取id,但这不是我需要的.

有可能的?

我试过这个:

String name = context.getResources().getResourceEntryName(view.getId());
Run Code Online (Sandbox Code Playgroud)

但不行.

android android-view

8
推荐指数
3
解决办法
5340
查看次数

在Openfire Server中使用Smack(Android)加载Vcards

我正在Android平台上使用XMPP协议和Openfire服务器实现消息传递应用程序.我需要保存并加载自己的Vcard和其他用户vcard.目前,我设法将我的vCard保存在服务器上并可以再次加载它.问题在于其他用户的Vcards,服务器总是返回XMPPError:功能未实现 - 取消.

我用这个库:

compile 'org.igniterealtime.smack:smack-android:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-tcp:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-extensions:4.1.2-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)

显示代码:

保存我自己的Vcard(工作正常).

VCardManager vCardManager = VCardManager.getInstanceFor(connection);
VCard vCard;
vCard = vCardManager.loadVCard();
vCard.setNickName("User name");
URL urldefault = new URL("Avatar URL");
InputStream stream = urldefault.openStream();
byte[] avatar1 = readBytes(stream);
vCard.setAvatar(avatar1, "avatar1/jpg");
vCard.setEmailHome("user email");
vCard.setPhoneHome("mobile", "888888888");
vCardManager.saveVCard(vCard);
Run Code Online (Sandbox Code Playgroud)

加载我自己的Vcard(工作正常)

VCard vCard = null;
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
vCard = vCardManager.loadVCard();
Run Code Online (Sandbox Code Playgroud)

问题出在这里.加载其他用户Vcard:

VCardManager vCardManager = VCardManager.getInstanceFor(connection);
boolean isSupported = vCardManager.isSupported(user);
if (isSupported)  // return true
    vCard = vCardManager.loadVCard(user);
Run Code Online (Sandbox Code Playgroud)

加载Vcard的用户名是正确的.

有任何想法吗?

提前致谢.

android xmpp openfire smack asmack

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

工具栏和ActionBar未显示在活动中

我首先在我的应用程序中使用Material设计,我的问题是当我创建活动时没有操作栏或工具栏但是我有Material Navigation抽屉为什么它没有像旧版本那样自动实现活动布局:

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

     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Text"
        android:id="@+id/textView4" />

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

活动:包装碎片;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;


  public class Noname1 extends ActionBarActivity{

   @Override
    protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
      setContentView(R.layout.test);

   }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {

     getMenuInflater().inflate(R.menu.main, menu);
     return super.onCreateOptionsMenu(menu);
 }
Run Code Online (Sandbox Code Playgroud)

我的主题:

  <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/nliveo_green_colorPrimary</item>
    <item name="colorPrimaryDark">@color/nliveo_green_colorPrimaryDark</item>
    <item name="colorAccent">@color/nliveo_green_colorPrimary</item>
    <item name="android:textColorPrimary">@color/myTextPrimaryColor</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>

    <item name="android:windowBackground">@color/myWindowBackground</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android

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

使用ScrollView(和NestedScrollView)时,CollapsingToolbarLayout不会折叠

我试图使用ScrollView使用CollapsingToolbarLayout,但我没有让它工作.我试试这个:

<android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">


        <android.support.v4.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_below="@+id/toolbar"
                android:scrollbars="none"
                android:overScrollMode="never"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"
                app:behavior_overlapTop="192dp"
                android:layout_height="match_parent">

            <LinearLayout android:layout_width="match_parent"
                          android:orientation="vertical"
                          android:padding="@dimen/medium_padding"
                          android:layout_height="match_parent">

                          <!-- my content -->


            </LinearLayout>

        </android.support.v4.widget.NestedScrollView>



        <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways"></android.support.v7.widget.Toolbar>
        <ImageView
                android:src="@drawable/fondo_drawer"
                app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="fitXY"
                app:layout_collapseMode="parallax"
                android:minHeight="100dp"/>

    </android.support.design.widget.CollapsingToolbarLayout>
Run Code Online (Sandbox Code Playgroud)

我用ScrollView和NestedScrollView测试失败了.

有任何想法吗?提前致谢!

android androiddesignsupport android-coordinatorlayout

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

检查是否使用windowmanager显示视图

在添加WindowManager之前,如何知道是否显示视图?我需要在原生拨号器中放置一个叠加层,但有时将原生拨号器放在mi自定义视图上方,我通过使用WindowManager多次添加元素来解决这个问题,但有时候视图会显示两次.

谢谢!!

private void callStartIncomingCallScreen(Context context, String incomingNumber) {
    startIncomingCallScreen(context, incomingNumber);

    Timer timer = new Timer();

    for (int i = 0; i < 2; i++) {
        timer.schedule(new StartIncomingCallScreenTimerTask(context, incomingNumber), 100 * i);
    }
}


class StartIncomingCallScreenTimerTask extends TimerTask {

    private Context context;
    private String incomingNumber;

    StartIncomingCallScreenTimerTask(Context context, String incomingNumber) {
        this.context = context;
        this.incomingNumber = incomingNumber;
    }

    public void run() {
        Intent intent = new Intent(context, IncomingCallGuiService.class);
        context.startService(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)

在IncomingCallGuiService中,我添加如下视图:

final LayoutParams params = new LayoutParams(
      LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
      LayoutParams.TYPE_SYSTEM_ALERT, …
Run Code Online (Sandbox Code Playgroud)

android overlay android-windowmanager

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