小编Dav*_*uez的帖子

在Android工具栏中删除汉堡包(菜单)图标后的大填充?

这是菜单图标后面的大填充间隙的图片: 在此输入图像描述

这是在我的项目没有工作一个月(暑期学校)后发生的.我刚刚回到它并注意到在我更新Android Studio后工具栏上的这个差距比正常大.我在SO上找不到任何关于此的问题/解决方案.如果有人能提供帮助,那将非常感激.

我通过这样做加载汉堡包图标(每行都正确放置在应用程序中,在类声明,onCreate()等中.为了简单起见,我把它放在这里.):

ActionBarDrawerToggle mDrawerToggle;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), dl, toolbar, R.string.nav_open, R.string.nav_closed)
mDrawerToggle.syncState();
Run Code Online (Sandbox Code Playgroud)

这是我的工具栏的xml代码:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:minHeight="?attr/actionBarSize"
    app:layout_scrollFlags="scroll|enterAlways"
    app:title="Test Title">

</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

我尝试搞乱各种contentInsetxml属性但没有影响菜单图标后的间距.

编辑:此链接显示我曾经拥有的(在页面中间找到).如果您注意到标题和汉堡包图标之间的间距,则间距不会像此处显示的图片那样宽.这就好像间距增加了一倍.

android android-toolbar

23
推荐指数
2
解决办法
6745
查看次数

如何在Android Studio的预览窗口中显示mainactivity布局中的菜单布局?

我正在制作一个带有图标的自定义菜单,我想知道是否可以看到工具栏上的菜单如何在运行模拟器上的程序或Android设备上运行.

我想知道是否可以通过包含tools命名空间暂时预览事物来完成此操作:

xmlns:tools="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

在你的布局文件中.然后你会把这样的东西:

tools:text="text here that is previewed only"
tools:layout="@layout/some_layout"
Run Code Online (Sandbox Code Playgroud)

我可以使用菜单资源文件执行此操作吗?因为当我制作菜单文件时,我希望它显示我的主题的格式.我尝试使用不同的tools属性,并尝试将其设置为我的菜单文件,但没有任何工作.这是它当前的样子,因为我看不到我的主题设置的布局:

在此输入图像描述

如果那是不可能的,我可以在另一个布局文件中查看菜单与主题设置的外观吗?

xml android android-layout

6
推荐指数
0
解决办法
562
查看次数

要下载哪些材料设计图标包?

如果我转到https://design.google.com/icons/并选择要下载的图标,则可以选择下载18dp,24dp,36dp或48dp版本.我下载了24dp软件包,它附带了hdpi,mdpi,xhdpi,xxhdpi和xxxhdpi图像.所以我不确定下载18dp,36dp或48dp的其他软件包有什么区别.有谁知道这个区别?什么是最好的下载,以在大多数Android设备上具有最佳兼容性?

android android-icons material-design

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

ViewPager 中的片段在旋转时在其 RecyclerView 中不显示任何内容

我在与 TabLayout 集成的 ViewPager 中有 4 个片段。这些 Fragment 中的每一个都包含一个 RecyclerView,因为我正在显示未知数量的列表项。这些项目是按日期加载的,所以我有两个按钮可以让您更改日期,然后根据设置的日期加载列表项目中的相应数据。按钮是外部活动的一部分。

到目前为止一切正常,但是一旦我旋转设备,片段就不会加载任何东西。片段内不显示任何内容。不过,外部活动中的视图显示得很好。奇怪的是,如果我触摸更改日期的按钮之一,则会加载片段并正确显示数据。但是我需要在旋转后立即显示所有内容,而不仅仅是在我单击这些按钮之一时。这是我的代码:

public class MainActivity extends AppCompatActivity implements DatePickerFragment.DateDialogInterface
{
    private final static String COLOR_CONTROL_CHOSEN = "color_control_chosen";
    private static final String DIALOG_DATE = "dialog_date";
    private static final String TAG = "MainActivity";
    private static final String SET_LOCATION = "set_location";
    public static final String LEAGUE_POSITION = "league_position";
    private Toolbar mToolbar;
    private ViewPager mViewPager;
    private TabLayout mTabLayout;
    private ImageButton mPrevDateButton, mNextDateButton;
    private TextView mDateTextView, mLeagueTextView;
    private String mTodaysDate;
    private Date mLastSelectedDate, mTodaysDateObj;
    private ProgressBar …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter

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

有没有办法可以获得0到10亿的随机数?

我现在不关心效率.我只是在找一个体面的方式,我可以生成0到10亿的随机数.我已经尝试过做rand()*rand(),但它只给了我估计超过大约1000万的数字.我希望范围更加分散.有人有什么建议吗?

c++ random algorithm

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

在C中循环分配和释放内存

我知道StackOverflow上有很多关于这个主题的答案,他们非常有帮助,但我不确定一件事.假设我有funcA和funcB:

char * funcA()
{
    char * arr = malloc(sizeof(char) * 20);

    //store data in arr...

    return arr;
}

void funcB()
{
    char * arr;
    while(up to some finite value)
    {
        arr = funcA();
        //do stuff with array

        /* Do I perform these two lines here every iteration?*/
        free(arr)
        arr = NULL;
    }

    /*Or do I perform it only once, at the end of the loop?*/
    free(arr)
    arr = NULL;
}
Run Code Online (Sandbox Code Playgroud)

我想arr应该在每次迭代中被释放.或者每次迭代都会"覆盖"数据arr,从而使得在循环结束时只能自由调用是安全的吗?这样做的正确方法是什么?谢谢.

c memory-leaks memory-management

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

如何从Firebase中的实时数据库获取数据

我在这个设置中使用了实时数据库:

->users
    ->uid
        ->name
        ->email
        ->other info
Run Code Online (Sandbox Code Playgroud)

如果我想保存用户数据,我会使用我的User类,然后在数据库中设置对象,如下所示:

//assume variables have already been declared...

mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseUser = mFirebaseAuth.getCurrentUser();
User user = new User(name, email, other values...);
mDBRef.child("users").child(mFirebaseUser.getUid()).setValue(user);
Run Code Online (Sandbox Code Playgroud)

我试过了,它工作正常.

但是如何从数据库中检索这些值?例如,一旦我设置了如上所示的User对象,我可能想要检索用户的电子邮件.我并不是指通过登录提供商收到电子邮件.我希望通过实时数据库发送电子邮件.我已经尝试了一段时间了,但文档没有多大帮助.它显示的是设置监听器以等待数据的更改.但我不是在等待改变,我不想要听众.我想通过使用JSON树中的键直接获取数据库中的值.这可以通过实时数据库吗?如果是这样,怎么办呢,因为文档没有解释它或者我只是不理解它.如果不可能,我应该使用存储数据库还是其他什么?谢谢.

android firebase firebase-realtime-database

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

在检查array [i] == i(必须是O(log n))时返回bool的递归算法

我正在尝试编写递归算法,如果至少有一个则返回true array[i] == i.如果没有,则为假array[i] = i.

此外,所需的参数是(int * arr, int start, int end).所以我将用指针遍历数组.例如:

int A[] = {-50,-10,0,1,3,5,8,10};
cout << sameIndex(A,0,7) << endl; //displays 1 (true) since A[5] == 5
Run Code Online (Sandbox Code Playgroud)

我遇到很多麻烦的部分是O(log n).我无法看到将数组划分为2的位置,每个函数调用都将获得正确的解决方案.试图提出这种算法的结构是我的头脑.有人能指出我正确的方向吗?我不是在寻找答案,我只是不知道如何以递归方式开始解决这个问题,更不用说在O(log n)时间内.

忘记提及是的整数是不同的和排序的.

我想到了!长颈鹿和亨里克船长是正确的,但他们使用略有不同的方法.我选择使用长颈鹿队长的方法,因为使用二分搜索会更简单,更直观.Henrik使用一个"技巧"来找到解决方案,通过减去array[i] - i检查它们是否等于0.无论如何,这里是解决方案:

bool sameIndex(int * A, int start, int end)
{
    int mid = (start + end)/2;

    if(start <= end)
    {
        if(*(A + mid) == mid)
            return true;
        else if(*(A + mid) > mid)                   //search left
            return sameIndex(A, start, …
Run Code Online (Sandbox Code Playgroud)

c++ arrays algorithm recursion

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

在字符数组上使用“免费”时出错

我是 C 的新手,并试图用它编写一个命令行程序。我正在尝试在程序终止之前释放一个字符数组。但是当它到达free命令时,我收到了“调试断言失败”的运行时错误。在到达那个点之前,程序会删除该数组中的字符,直到第一个空格为止。我在数组上使用递增技术,因为我读到这是一种从数组中一个一个删除字符的方法。这是那段代码:

char command[140];
char * input = getInput();  //prompt function for user input

//get string up to first whitespace to separate the command and its parameters
for (i = 0; i < strlen(input); i++)
{
    if (input[i] == ' ' || input[i] == '\0')
        break;

    command[i] = input[i];
}

for (j = 0; j <= i; j++)    //removes command and space and leaves parameters
    input++;

command[i] = '\0';  //null terminate char array
numParams = getNumParams(input);
free(input); …
Run Code Online (Sandbox Code Playgroud)

c arrays free pointers char

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

使用Gson将自定义类的ArrayList序列化为JSON并通过HTTP发送数据

我想将ArrayList中的数据转换为JSON,然后将其发送到我的网络服务器.列表mTeamDataList是类型ArrayList<TeamData>.

TeamData堂课是:

public class TeamData
{
    String mFullName;
    String mShortName;
    String mLeague;

    //constructor, getters and setters are here
}
Run Code Online (Sandbox Code Playgroud)

我有一个addTeamsToDB()方法负责将数组中的数据写入Web服务器.这是我到目前为止:

public static void addTeamsToDB()
{
    if(mTeamDataList.size() == 0)
        return;

    HttpURLConnection urlConnection = null;
    String addTeamURL = "http://api.somewebsite.com/add_team.php";

    try
    {
        Gson gson = new Gson();
        URL urlObj = new URL(addTeamURL);
        urlConnection = (HttpURLConnection) urlObj.openConnection();
        urlConnection.setDoOutput(true);
        urlConnection.setRequestMethod("POST");
        urlConnection.connect();

        //I believe converting to json goes here

        OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());

    } 
    catch (IOException e) …
Run Code Online (Sandbox Code Playgroud)

java post android json gson

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

Google Maps API使用Retrofit GET调用

我想将纬度和经度值传递给locationGoogle Maps Autocomplete API调用的属性,但我不知道如何在Retrofit中形成GET调用.URL最终应如下所示:

https://maps.googleapis.com/maps/api/place/autocomplete/json?&types=address&input=user_input&location=37.76999,-122.44696&radius=50000&key=API_KEY
Run Code Online (Sandbox Code Playgroud)

我目前在Retrofit界面中拥有的内容:

public interface GooglePlacesAutoCompleteAPI
{
    String BASE_URL = "https://maps.googleapis.com/maps/api/place/autocomplete/";
    String API_KEY = "mykey";  //not the actual key obviously

    //This one works fine
    @GET("json?&types=(cities)&key=" + API_KEY)
    Call<PlacesResults> getCityResults(@Query("input") String userInput);

    //This is the call that does not work
    @GET("json?&types=address&key=" + API_KEY)
    Call<PlacesResults> getStreetAddrResults(@Query("input") String userInput, 
                                             @Query("location") double latitude, double longitude,
                                             @Query("radius") String radius);
}
Run Code Online (Sandbox Code Playgroud)

我的错误是: java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #3) for method GooglePlacesAutoCompleteAPI.getStreetAddrResults

那么我该如何正确设置GET方法getStreetAddrResults()呢?

此外,我的数据类型是否适用于纬度/经度和半径?谢谢你的帮助!

android google-maps google-places-api retrofit

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